You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ArcGIS API for Python将道路Polyline数据合并绘制在同一地图

解决方案

要把所有道路Polyline合并显示在同一地图上,你可以借助ArcGIS API for Python的Map和图层组件实现,两种实用方法如下:

方法1:直接加载FeatureLayer(推荐)

无需手动请求JSON,直接通过服务URL创建FeatureLayer并添加到地图,ArcGIS会自动处理渲染、图层合并等逻辑:

from arcgis.gis import GIS
from arcgis.layers import FeatureLayer

# 匿名登录ArcGIS
gis = GIS()
# 创建地图,初始视角定位到爱尔兰区域
m = gis.map('Ireland', zoomlevel=7)
# 道路服务的FeatureLayer地址
road_layer_url = "https://services-eu1.arcgis.com/FH5XCsx8rYXqnjF5/arcgis/rest/services/Roads___OSi_National_250k_Map_Of_Ireland/FeatureServer/0"
# 创建图层并添加到地图
road_layer = FeatureLayer(road_layer_url)
m.add_layer(road_layer)
# 显示合并后的地图
display(m)

方法2:手动处理JSON数据并添加到GraphicsLayer

如果需要自主处理API返回的JSON数据,可以将所有道路Polyline转为Graphic对象,统一添加到GraphicsLayer后再展示:

import requests
from arcgis.gis import GIS
from arcgis.layers import GraphicsLayer
from arcgis.geometry import Polyline
from arcgis.features import Graphic

# 请求道路数据
url = 'https://services-eu1.arcgis.com/FH5XCsx8rYXqnjF5/arcgis/rest/services/Roads___OSi_National_250k_Map_Of_Ireland/FeatureServer/0/query?where=1%3D1&outFields=*&outSR=4326&f=json'
response = requests.get(url)
road_features = response.json()['features']

# 初始化地图和图形图层
gis = GIS()
m = gis.map('Ireland', zoomlevel=7)
graphics_layer = GraphicsLayer()

# 遍历所有道路,转为Graphic并批量添加到图层
for feature in road_features:
    polyline = Polyline(feature['geometry'])
    graphic = Graphic(geometry=polyline, attributes=feature['attributes'])
    graphics_layer.add(graphic)

# 将图层挂载到地图并显示
m.add_layer(graphics_layer)
display(m)

问题原因说明

你之前的代码每次display(Polyline(...))都会生成独立的地图实例,而将所有图形统一放到同一个GraphicsLayer或FeatureLayer中,就能实现同一地图上的合并显示。

内容的提问来源于stack exchange,提问作者user101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:25:29