许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  扩展你的ArcGIS Earth:自定义功能与插件开发

扩展你的ArcGIS Earth:自定义功能与插件开发

阅读数 21
点赞 0
article_banner

前言

ArcGIS Earth是一款免费的桌面应用,也是ArcGIS平台中最重要的桌面端。ArcGIS Earth可以免费使用Esri提供的全球地形、影像服务,像Google Earth一样浏览感兴趣的地区;同时用户还可添加自己的二、三维数据如shapefile、KML/KMZ数据,实现在三维空间内展现二、三维数据并满足用户绘制基本要素、量测、分享等基本需求。ArcGIS Earth对企业级用户而言,可以让企业内每一个人根据角色的不同访问发布在Server上二维要素服务、三维场景服务等。

本文介绍一下ArcGIS Earth的一些不为人知的功能。

Point based service

当你安装完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的服务器。

  1. 搭建一个CherryPy 的服务器
  2. 创建一个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>
  1. 创建一个cherrypy app,支持解析用户的请求,替换模板中的参数,并返回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
  1. 修改ArcGISEarth.exe.config文件,加入以下配置。
 <add key="urlwithpos" 
value="http://127.0.0.1:8585/callWhat3Words?lon=%LONGITUDE%&lat=%LATITUDE%&elv=%ELEVATION%"
/>
  1. 重启Earth,右键单击,就会看到

目前支持的参数有:

  • %LONGITUDE% - 表示单击点的经度的键值
  • %LATITUDE% - 表示单击点的纬度的键值
  • %ELEVATION% - 表示单击点的高程的键值,当前以米为单位
  • %HEADING% - 表示朝向

Automation API

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上并上传你的问题或者与我们分享你的想法。

   请尽情发挥想象吧。

参考


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空