1.前言
本开源方案的构架是:geoserver(服务器)+tomcat(中间件)+postgis(数据库)+uDig(desktop)。
本文将主要讲解如何将shp数据通过postgis导入到postgresql中,并且在uDig上进行展示和编辑,然后如何将postgresql中的图层数据通过geoserver进行发布。
2.通过postgis将shp数据入库
2.1环境
需装有postgresql+postgis。安装完成后,在程序目录中可以看到:
2.2. 入库
a. 点击 此工具,会弹出对话框:
b.设置数据库的连接
点击connection,在弹出的对话框中设置连接属性:
连接成功会有以下日志:
注意:此处的database一定要是集成了postgis的数据库模板的数据库才行,否则空间数据无法导入。
c.选择要导入的shp数据
点击Add File,会弹出如下对话框:
选择要导入的shp数据,选择完后点击确定:
注意:shp所在的文件夹路径一定要是英文,否则在导入时会导入失败。
d.数据导入
注意:首先要点击Options,进行编码设置。根据我的测试,UTF-8的编码在图层中有中文属性时,导入会出现错误。这里建议将编码设置为:GBK。
点击Import,开始导入。导入成功后,会有如下日志:
e.在postgresql中查看导入的shp数据:
3.通过uDig查看和编辑postgresql中的shp数据
3.1环境
需装有uDig软件。安装成功后,在程序目录中可以看到:
3.2在uDig中查看postgis中的数据
a.点击Layer——>add,选择PostGIS:
b.填写连接属性:
c.将postgis中的图层添加到当前map中:
d.uDig中显示添加的图层:
3.3对图层进行编辑
编辑完后点击Enter:
注意:一定要点击工具栏中的 ,才能将编辑成功提交。
4.通过geoserver发布postgresql中的shp数据
4.1 环境
需发布一个geoserver服务。发布成功后,可以在浏览器中打开网页:
4.2 发布地图服务
a.点击stores——>add stores——>postGIS,在进入的页面中填写连接属性:
b.选择要发布的shp图层:
c.填写图层信息:
d.发布服务及查看:
点击save后,图层即发布成功。在layer preview中可以查看发布的图层:
注意:可以明显的看到通过uDig编辑后的要素已被成功保存。
本文链接:WebGIS开源方案中空间数据的入库、编辑、发布的操作流程,转载请注明。
临时接受支付宝支付任务,最初研究旧版本,后来发现新版本更简单明了优化,使用最新版的,看见旧版的写出来的人多,新版的少,咱这最精炼的通过实践滴,与大家共同进步。
1.下载移动支付接口SDK2.0标准版,解压取出:
(1)从客户端alipay-sdk-common文件夹中取出alipaysdk.jar 、alipaysecsdk.jar 、alipayutdid.jar放入新建项目libs中,android4.0之后只要放入免手动导入,低于这个版本的按旧方法手动导入。
(2)从客户端Demo中取出Base64.java 、Result.java、SignUtils.java放在src中,对应支持的。
2.权限开通:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
3.支付接口调用:
/**
* 通过支付宝支付订单
*void
* @exception
* @since 1.0.0
*/
public void pay(final String orderInfo, final String sign){
threadManager.startTaskThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// 构造PayTask 对象
PayTask alipay = new PayTask(activity);
//拼接成完整支付信息(订单+签名)
final String payInfo = orderInfo + "&sign=\"" + sign + "\"" + "&"
+ getSignType();
// 调用支付接口
String result = alipay.pay(payInfo);
payResult = Base64.encode(result.getBytes());
Result rtl = new Result(result); //解析支付结果
//TextUtils.equals(resultStatus, "9000")
//支付结果错误码:
/*9000:订单支付成功
*8000:正在处理中("支付结果确认中") 代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
*4000:订单支付失败
*6001:用户中途取消
*6002:网络连接出错 */
final String resultStatus = rtl.resultStatus; //支付错误码
GoloLog.d(ALIPAY_PAY_KEY, "get alipay result status: "+ resultStatus);
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (TextUtils.equals(resultStatus, "9000")) { //9000:订单支付成功
Toast.makeText(activity, "支付成功",
Toast.LENGTH_SHORT).show();
}else {
// 判断resultStatus 为非“9000”则代表可能支付失败
// “8000” 代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(activity, "支付结果确认中",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(activity, "支付失败",
Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
});
}
4.个人界面调用:
orderInfo 订单内容
strsign 签名
//支付宝支付
private void toAlipay() {
// TODO Auto-generated method stub
String orderInfo = OrderBean.getOrderInfo();
String strsign = OrderBean.getOrderSign();
alipayPayHandler.pay(orderInfo, strsign);
}
本文链接:移动支付SDK2.0应用小结,转载请注明。
没有评论:
发表评论