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

如何将Bing Isochrone API坐标数组转为ArcGIS多边形要素(支持多要素)

把Bing Isochrone坐标数组转换成ArcGIS要素(批量处理方案)

作为ArcGIS新手,刚拿到Isochrone的坐标数组确实会有点懵,我给你分两种方案,从简单手动到自动化批量处理,你可以根据自己的数据量来选:

一、半手动方案(适合少量多边形)

如果你的多边形数量不多,可以先把坐标转换成WKT格式(ArcGIS原生支持的文本格式),再导入生成要素:

  1. 调整坐标格式
    你拿到的坐标是[纬度, 经度]的顺序,但ArcGIS里需要[经度, 纬度],而且多边形必须闭合(最后一个点和第一个点重复)。比如你给的示例要改成:

    POLYGON((-97.09152 32.19802, -97.05196 32.17197, -97.02786 32.16111, -97.01473 32.1298, -97.09152 32.19802))
    

    每个多边形对应一段这样的WKT字符串。

  2. 导入到ArcGIS

    • 在ArcGIS Pro里,直接用「从WKT创建要素」工具:输入你的WKT文本(或包含WKT的表格),选择对应的坐标系(一般是WGS84,WKID 4326),就能生成多边形要素。
    • 如果是ArcMap,可以先新建一个多边形要素类,然后打开Python窗口,用几行代码插入单个要素:
      import arcpy
      sr = arcpy.SpatialReference(4326)
      wkt = "POLYGON((-97.09152 32.19802, ...))"  # 替换成你的WKT
      polygon = arcpy.FromWKT(wkt, sr)
      arcpy.CopyFeatures_management(polygon, r"C:\YourPath\output.shp")
      

二、批量处理方案(适合多个多边形,存入表格)

如果要处理大量多边形,用表格批量导入效率最高:

  1. 准备数据源表格
    用Excel或CSV做一个表格,至少包含两列:

    • 列1:要素名称(方便区分不同的Isochrone)
    • 列2:WKT字符串(每个多边形对应一行,按上面的格式整理)
  2. 导入表格并生成要素

    • 把表格导入ArcGIS(ArcGIS Pro直接拖入,ArcMap用「表转Excel」或「导入表」工具)。
    • 运行「从WKT创建要素」工具:
      • 输入表:选择你导入的表格
      • WKT字段:选择存放WKT的列
      • 输出要素类:指定保存位置(比如地理数据库或Shapefile)
      • 坐标系:选择WGS84(4326)
        运行完成后,所有多边形就会批量生成要素。

三、自动化脚本方案(适合程序员或大量数据)

如果你的坐标数组是从API直接获取的,想全程自动化,可以用ArcPy脚本处理:

import arcpy

# 配置参数:替换成你的路径和坐标数组
workspace = r"C:\Your\Geodatabase.gdb"  # 输出要素类的保存位置
output_fc_name = "Isochrone_Polygons"    # 输出要素类名称
polygon_coords_list = [
    # 每个元素是一个多边形的坐标数组(从Bing API获取的格式)
    [[32.19802, -97.09152],[32.17197, -97.05196],[32.16111, -97.02786],[32.1298, -97.01473], [32.19802, -97.09152]],
    [[32.2001, -97.1002], ...]  # 添加更多多边形坐标
]

# 定义坐标系(WGS84)
sr = arcpy.SpatialReference(4326)

# 创建空的多边形要素类
arcpy.CreateFeatureclass_management(
    out_path=workspace,
    out_name=output_fc_name,
    geometry_type="POLYGON",
    spatial_reference=sr
)

# 批量插入要素
with arcpy.da.InsertCursor(f"{workspace}\\{output_fc_name}", ["SHAPE@"]) as cursor:
    for coords in polygon_coords_list:
        # 反转坐标顺序:从[纬度,经度]改成[经度,纬度]
        arcgis_coords = [(lng, lat) for lat, lng in coords]
        # 创建多边形对象
        polygon = arcpy.Polygon(arcpy.Array([arcpy.Point(*p) for p in arcgis_coords]), sr)
        # 插入到要素类
        cursor.insertRow([polygon])

print(f"所有Isochrone要素已生成到:{workspace}\\{output_fc_name}")

关键注意事项

  • 坐标顺序:一定要把[纬度,经度]反转成[经度,纬度],不然要素会跑到错误的位置(比如南半球或东经区域)。
  • 多边形闭合:每个坐标数组的最后一个点必须和第一个点相同,否则ArcGIS无法识别为有效多边形。
  • 坐标系匹配:确保输出要素类的坐标系和Bing API返回的坐标一致(默认是WGS84),如果需要投影到其他坐标系,后续可以用「投影」工具转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:11:00