我有两个ArcGIS REST端点,我试图获取每个图层的列表:
https://rdgdwe.sc.egov.usda.gov/arcgis/rest/serviceshttps://services1.arcgis.com/RLQu0rK7h4kbsBq5/ArcGIS/rest/services的数据库
这些不是我的组织的端点,因此我无法在内部访问它们。在这些端点中的每一个端点上,都可以有文件夹、服务和层,或者只有服务和层。
我的目标是得到所有层的列表。到目前为止,我已经尝试过:
endpoints=(["https://rdgdwe.sc.egov.usda.gov/arcgis/rest/services",
"https://services1.arcgis.com/RLQu0rK7h4kbsBq5/ArcGIS/rest/services"])
for item in endpoints:
reqs = requests.get(item, verify=False)
# used this verify because otherwise I get an SSL error for endpoints[0]
soup =BeautifulSoup(reqs.text, 'html.parser')
layers = []
for link in soup.find_all('a'):
print(link.get('href'))
layers.append(link)
字符串
然而,这并没有考虑到可变的嵌套文件夹/服务/层或服务/层模式,而且它似乎没有完全附加到我的层列表中。
我想我也可以走JSON路线并附加?f=psjon
。例如:
https://rdgdwe.sc.egov.usda.gov/arcgis/rest/services/?f=pjson将为我获取文件夹https://rdgdwe.sc.egov.usda.gov/arcgis/rest/services/broadband/?f=pjson将为我获取宽带文件夹中的所有服务,https://rdgdwe.sc.egov.usda.gov/arcgis/rest/services/broadband/CDC_5yr_OpioidOverDoseDeaths_2016/MapServer?f=pjson将为我获取宽带文件夹中第一个服务(CDC_5yr_OpioidOverDoseDeaths_2016)中的CDC_OverDoseDeathsbyCounty2016_5yr层。
我把它放在这里与GIS堆栈交换中,因为它看起来比地理空间更像是一个Python问题。
3条答案
按热度按时间qgzx9mmu1#
我不太同意这是一个Python问题,因为似乎没有任何关于如何使用各种Python库的问题。主要问题似乎是如何使用Esri的REST API。考虑到Esri是一家GIS公司,他们的REST API也是一个GIS API,我认为GIS StackExchange会是一个更好的问题论坛。
但是,既然我们现在在这里....
如果您打算继续使用带有Python的Esri REST API,我强烈建议您阅读有关Esri ArcGIS API for Python的资料。从其核心来看,ArcGIS API for Python是一个用于使用Esri REST API的Python Package 器。除非某人有非常基本的需求,否则为Esri REST API编写自己的Python代码并不值得。
如果您打算自己滚动,我强烈建议您阅读Get started -- ArcGIS REST APIs | ArcGIS Developers。文档描述了REST API的结构、语法,并包括一些示例。
以下内容并不美观,它更多的是为了帮助您在阅读Esri文档时将点连接起来。也就是说,它将给予您ArcGIS Server站点上的Map服务列表以及这些服务的图层。
字符串
relj7zay2#
作为开发GISsurfer(https://gissurfer.com)的一部分,我面临着这个确切的问题,但对于 * 任何 * 不需要登录凭据的ArcGIS服务器。我的解决方案是编写PHP代码来“遍历树”以查找所有服务。
vsikbqxv3#
https://transparentgov.net/json2tree/esri/server2/searchLayer.html?org=https%3A%2F%2Fservices.arcgis.com%2Ff48yV21HSEYeCYMI%2Farcgis%2Frest%2Fservices&url=https%3A%2F%2Fservices.arcgis.com%2Ff48yV21HSEYeCYMI%2Farcgis%2Frest%2Fservices&select_folder=1&select_layer=0&arcgis_online_token=&filter_by=
此示例列出了arcgis服务器
上的所有图层
它是如何工作的,看这里
https://transparentgov.net/cleargov1/1278/palm-springs-ca-arcgis-asset的