目录
1、思路
数据首先存储于SDE中,要素添加GlobleID,图层数据启用数据归档或开启版本化。然后将SDE数据库托管于ArcGIS for Server作为数据存储。
在ArcGIS for Desktop桌面软件中制作待同步矢量数据,配置符号化显示,属性域等信息,发布FeatureServer服务到ArcGIS for Server并开启同步功能选项。
移动端以域名方式访问FeatureServer服务,下载数据、编辑数据、同步数据。
局域网下用ip地址访问server中的地图服务可以参考https://www.cnblogs.com/gis-luq/p/5858043.html,本文是基于域名来访问server中的地图服务。
2、环境部署
局域网下移动端以域名方式访问FeatureServer服务需要在电脑本机安装DNS服务器,然后在手机上设置本地代理。
按照链接https://www.jb51.net/article/137012.htm介绍使用BIND9安装DNS服务器
①其中name.conf和gis.com.zone文件的配置如下:
②将我们本机电脑默认的DNS服务器改成127.0.0.1或本机IP,如果想让DNS服务器正常访问本机IP与DNS服务必须设置固定IP
下述图片我填的都是本机ip地址
③ 将本机server内置在线api改为本地api,参考https://blog.csdn.net/gislaozhang/article/details/103700327
采用http://zjq2018.gis.com/*******的形式。
④手机上设置本地代理
参考https://jingyan.baidu.com/article/219f4bf7ff97e6de442d38c8.html
⑤手机浏览器显示电脑地图服务
http://zjq2018.gis.com:6080/arcgis/rest/services/SampleWorldCities/MapServer
下图说明手机端已能访问电脑端的地图服务
手机浏览器内核不同,采用的是在线API所以没有显示地图服务,不要紧。
最终通过ArcGIS runtime sdk100.7基于
https://developers.arcgis.com/android/latest/java/sample-code/arcgis-map-image-layer-url/代码进行测试,其中动态地图服务采用server自带的全球动态地图服务http://zjq2018.gis.com:6080/arcgis/rest/services/SampleWorldCities/MapServer
3、发布具有同步能力的要素服务
将sde中的数据发布成要素服务,操作方法参考https://www.cnblogs.com/gis-luq/p/5857188.html,不同的是我这只是为了测试,只将sde中的要素类添加数据GlobalID、启用数据存档,没有进行注册版本化。
4、编辑和同步要素
通过ArcGIS runtime sdk100.7基于https://developers.arcgis.com/android/latest/java/sample-code/edit-and-sync-features/的示例调用上一步发布的要素服务(http://zjq2018.gis.com:6080/arcgis/rest/services/fs/testareapt/FeatureServer)进行测试。
在手机端点击“generate geodatabase”按钮会在手机本地指定的位置生成.geodatabase地理数据库文件,将两个要素点移动其位置,移动完成之后点击“sync geodatabase”按钮会将更改后的结果同步会要素服务。
打开要素服务,发现要素点的位置是手机端移动后的位置。
一些小经验
①如果发现在安装完BIND9软件后,在C:\Program Files\ISC BIND 9文件“属性”面板——“安全”下没有name用户,那么在“高级”选项将其找到添加即可。
②通过cmd启动启动DNS服务器报“发生系统错误 5. 拒绝访问”,可以通过以管理员身份运行cmd即可成功启动DNS服务。
③局域网下手机端可以通过ip访问电脑iis web服务器中的一张图片,例如:http://192.168.0.105/test.png,但是在手机却不能通过ip访问本机的地图服务,报“无法打开网页”,
这是由于防火墙是打开状态,通过在防火墙高级设置中加入6080和6443端口,解决问题。设置方法参考
http://www.xitongcheng.com/jiaocheng/win10_article_12908.html
④编辑和同步示例中,能够将要素服务离线下载为.geodatabase文件,编辑后能够成功同步,但是在电脑打开要素服务,发现要素服务没有更新,将.geodatabase通过arcmap的copy runtime geodatabase to file geodatbase工具转为gdb发现数据明明是编辑后的样子。出现这种原因是发布要素服务之前,要素类被注册为版本造成的,通过不注册版本只添加Global ID和启用存档就能解决。
⑤将.geodatabase通过arcmap10.7.1的copy runtime geodatabase to file geodatbase工具运行时报错,报“error 001730:Could not open the Runtime Geodatabase ****** ”
这个问题不好复现,我有时又不会出现那种情况,但是如果遇到这种情况只需将这个.geodatabase拷贝到其它路径下重命名文件名即可解决,例如:test.geodatabase改为abctest.geodatabase。