ArcGIS Earth是一款免费的桌面应用,也是ArcGIS平台中最重要的桌面端。ArcGIS Earth可以免费使用Esri提供的全球地形、影像服务,像Google Earth一样浏览感兴趣的地区;同时用户还可添加自己的二、三维数据如shapefile、KML/KMZ数据,实现在三维空间内展现二、三维数据并满足用户绘制基本要素、量测、分享等基本需求。ArcGIS Earth对企业级用户而言,可以让企业内每一个人根据角色的不同访问发布在Server上二维要素服务、三维场景服务等。
本文介绍一下ArcGIS Earth的一些不为人知的功能。
当你安装完ArcGIS Earth后,会发现在X
C:\Users\username\AppData\Local\Programs\ArcGIS\Earth\bin. XX位置有一个config.xml文件,这是earth的配置文件。详细说明见文档。里面有一个positionServiceUrl, 详细说明如下:

计算机管理员可以输入某些带有编码值的URL, 这些编码值会被ArcGIS Earth识别,并填充相应的位置信息。 在设置好该参数后,用户在ArcGIS Earth中使用鼠标右键单击地面,将会把点击的点的 经纬度 ,高程等信息传递到该URL,并向管理员配置的服务器发送请求,当服务器返回有效的KML时,该KML将会显示在地球窗口中。

调用google街景服务,在ArcGIS Earth中显示街景
收到了很多用户的反馈,要求我们提供类似与Google街景的功能,目前ArcGIS Earth里还不支持街景,但是我们可以使用上面的方式来查看街景。
此处嵌入视频
实现的原理大概是这样的。
用户鼠标右键点击->earth获取点击位置的经纬度坐标->将位置信息填充到URL模板中,并发送请求->服务器解析请求,并生成kml->Earth加载KML并显示Popup。
用户可以按照以下步骤创建一个能返回kml的服务器。
<?xml version="1.0" encoding="UTF-8"?>
<kml>
<Document>
<name>%title%</name>
<description><![CDATA[%description1%]]>
</description>
<Placemark>
<name>%lon%,%lat%</name>
<styleUrl>#golf-balloon-style</styleUrl>
<description><![CDATA[<img
src="http://www.yakjive.com/styles/
icons/spaceship-orange.png"/>]]>%descrip
tion2%</description>
<LookAt>
<longitude>%lon%</longitude>
<latitude>%lat%</latitude>
<altitude>%elevation%</altitude>
<heading>0.00265562742696041</heading>
<tilt>0</tilt>
<range>11030676.39798315</range>
</LookAt>
<Point>
<coordinates>%lon%,%lat%,%elevation%</coordinates>
</Point>
</Placemark>
</Document>
</kml>
@cherrypy.expose
def callWhat3Words(self, lon=0, lat=0, elv=0):
cherrypy.response.headers['Content-Type']= 'text/xml'
w3wURL = 'https://api.what3words.com/position?key={MYKEYNOTYOURS}&position='
+ str(lat) + ',' + str(lon)
req = urllib.request.Request(w3wURL)
c = urllib.request.urlopen(req)
res = c.read()
data = json.loads(res.decode("utf-8"))
#Build my HTML that will be embedded in KML
description1 =
'<div height=250 width=400 style="font-family:Verdana;">' +
'<img src="http://127.0.0.1:8585/templates/what3words_logo.png"' +
' height=139 width=400/>' +
'<p><span style="color:blue">' +
data['words'][0] + ':' +
data['words'][1] + ':' +
data['words'][2] +
'</span></p></div>'
description2 = ''
#Load and modify the KML template
kmlFile = open('home/templates/response.kml', 'r')
result = kmlFile.read()
result = result.replace("%lon%", str(lon)).
replace("%lat%", str(lat)).
replace("%elevation%", str(elv)).
replace("%description1%", description1).
replace("%description2%", description2).
replace("%title%", "What3Words Test")
return result
<add key="urlwithpos"
value="http://127.0.0.1:8585/callWhat3Words?lon=%LONGITUDE%&lat=%LATITUDE%&elv=%ELEVATION%"
/>

目前支持的参数有:
ArcGIS Earth的Automation API则是ArcGIS Earth另一个扩展功能。更多信息请见ArcGIS for Developers 或者是 ArcGIS Earth homepage
在我们发布ArcGIS Earth的第一个版本的时候,就听到有关于API的需求。使用这些API能够 控制 ArcGIS Earth以及与二三维的数据内容进行交互。因此,我们设计了这个API,主要用于app to app(应用程序对应用程序)的通讯。
ArcGIS Earth Automation API 提供了基于WCF的服务契约(Service Contract),这样第三方的基于.Net的应用程序就可以通过使用API提供的服务契约与ArcGIS Earth进行 通讯 。ArcGIS Earth提供的通讯方式使用NetNamedPipeBinding,可以提供快速,安全的单机绑定。
通过ArcGIS EarthAPI,用户可以在他们自己的应用程序基础上创建.Net的扩展,并使用这个扩展来访问ArcGIS Earth的资源,或者是控制3D浏览。
ArcGIS Earth Automation API 提供了以下的功能:
1、 获取和设置相机信息
2、 控制相机的飞行
3、 从本地文件夹或者网络路径添加图层
4、 管理workspace内容(目前仅提供添加图层和删除所有图层)
5、 提供当前视图的截图
目前的ArcGIS Earth Automation API为用户的痛点提供的解决方案。它能给你场景和工作区的控制能力。Esri将会添加更多功能。
我们来看看能用它干什么吧。下面的一个例子展示了,如何在ArcGIS Pro 2.0中关键一个扩展,并使用这个扩展来同步ArcGIS Pro和ArcGIS Earth的三维场景的相机视角。如你所见,在切换ArcGIS Pro的书签的同时,我们会发现ArcGIS Earth的相机视角也会进行相应的改变。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-peF37TBq-1573224168903)(https://community.esri.com/servlet/JiveServlet/downloadImage/38-57809-370813/api3.gif)]
[外链图片转存失败(img-aAo8YPbS-1565227643427)(https://geonet.esri.com/servlet/JiveServlet/showImage/38-57809-370813/api3.gif)]
想试试这个add-in吗,去这个页面View Synchronization Sample,然后下载用例代码到你本机。请注意,你需要在你本地的开发环境中编程生成该插件。如果你想获取add layer是否成功等信息,你需要修改这部分的代码以完善双工通讯部分。
从ArcGIS Earth product homepage中获取更多信息,在GeoNet上并上传你的问题或者与我们分享你的想法。
请尽情发挥想象吧。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删