如何从网站上从 ESRI Arcgis 抓取/提取数据?

Posted

技术标签:

【中文标题】如何从网站上从 ESRI Arcgis 抓取/提取数据?【英文标题】:How to scraping/Extract data from ESRI Arcgis from website? 【发布时间】:2021-07-14 10:29:51 【问题描述】:

我试图从嵌入网站的 ESRI 地图中提取数据。目标是通过引入地理坐标来访问地图上的值。

我在这里留下一张地图和相应的地址。我只是不明白我应该使用哪种方法,因为地图嵌入在网站中。我应该使用哪些流程?

*用于学术目的

https://zonamentopf.portaldasfinancas.gov.pt/simulador/default.jsp

【问题讨论】:

【参考方案1】:

注意:请尊重数据所有权。如有疑问,请勿保存他人数据的副本。

听起来您想提取此地图中的多边形数据。网络应用发出这样的请求:

https://zonamentopf.portaldasfinancas.gov.pt/simulador/proxy.jsp?http://ags/arcgis/rest/services/SIMIMI/SIMIMI/MapServer/identify?f=json&tolerance=0&returnGeometry=false&imageDisplay=400%2C400%2C96&geometry=%7B%22x%22%3A-886651.3363331377%2C%22y%22%3A4443259.272690449%7D&geometryType=esriGeometryPoint&sr=102100&mapExtent=-887053.8250602124%2C4442583.282721534%2C-885178.7292100423%2C4443968.70385924&layers=all%3A0%2C1%2C2%2C3%2C4&callback=dojo.io.script.jsonp_dojoioscript11._jsonpCallback

如果您只想要数据,可以删除callback 参数:

https://zonamentopf.portaldasfinancas.gov.pt/simulador/proxy.jsp?http://ags/arcgis/rest/services/SIMIMI/SIMIMI/MapServer/identify?f=json&tolerance=0&returnGeometry=false&imageDisplay=400%2C400%2C96&geometry=%7B%22x%22%3A-886651.3363331377%2C%22y%22%3A4443259.272690449%7D&geometryType=esriGeometryPoint&sr=102100&mapExtent=-887053.8250602124%2C4442583.282721534%2C-885178.7292100423%2C4443968.70385924&layers=all%3A0%2C1%2C2%2C3%2C4

但是,如果您只是转到该链接,则会收到有关缺少或不正确的推荐人的错误消息。为了克服这个问题,您需要添加一个名为Referer 的标头,其值为https://zonamentopf.portaldasfinancas.gov.pt/simulador/default.jsp。您可以在脚本或 Postman 等应用程序中执行此操作,但您无法在自己的网络应用程序中执行此操作。

查看可用层:https://zonamentopf.portaldasfinancas.gov.pt/simulador/proxy.jsp?http://ags/arcgis/rest/services/SIMIMI/SIMIMI/MapServer?f=json(带有我提到的 Referer 标头)

要查看有关单个图层的元数据,请使用以下 URL。将/0/ 中的 0 替换为不同的层 ID 以获得不同的层。 https://zonamentopf.portaldasfinancas.gov.pt/simulador/proxy.jsp?http://ags/arcgis/rest/services/SIMIMI/SIMIMI/MapServer/0?f=json(带有我提到的 Referer 标头)

到query 其中一个层获取数据,使用以下 URL 获取所有内容,或者如果要过滤数据,请添加一些查询参数。将/0/ 中的 0 替换为不同的层 ID 以获得不同的层。 https://zonamentopf.portaldasfinancas.gov.pt/simulador/proxy.jsp?http://ags/arcgis/rest/services/SIMIMI/SIMIMI/MapServer/0/query?f=json&outFields=*&where=0%3D0(带有我提到的 Referer 标头)

相关回答:https://***.com/a/50213419/720773

【讨论】:

【参考方案2】:

我必须承认,我不太确定您在提取数据方面的目标是什么。我访问了该站点,它是一个使用ArcGIS API for javascript 创建的非常基本的嵌入式Web 地图,尽管它包含在JSP 中。 Web 地图正在使用一些可公开访问的 Esri 服务(World_Imagery、World_Boundaries_and_Places)以及来自www.portaldasfinancas.gov.pt 的一些非公共组织服务。

在我看来,您似乎对地理编码感兴趣。使用 Esri 的 ArcGIS Online Geocoding Service 查找地图上的指针/标记:

您已到达 ArcGIS Online 地理编码服务的主页。采用 它将地址转换为坐标,坐标转换为地址,或者 定位兴趣点。

如果您是开发人员,请提供使用此服务的详细文档 在您的应用程序中可以在ArcGIS Online Geocoding Service Help 中找到。

如果您是 ArcGIS for Desktop 用户,您可以使用此服务 以交互方式查找地址或geocoding a table of addresses。

由于我不太清楚你想做什么,所以我现在能提供的就这些了。

【讨论】:

以上是关于如何从网站上从 ESRI Arcgis 抓取/提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ReactJs 项目中使用 Esri Arcgis Map?

如何在 ArcGIS esri 搜索中放置查询?

用于 Java 的 Arcgis API 的包 com.esri.arcgisruntime.ogc.kml

arcgis教程

如何安装arcgis10.2

如何从注册表中获取ArcGIS的安装路径