如何将Bing Isochrone API坐标数组转为ArcGIS多边形要素(支持多要素)
把Bing Isochrone坐标数组转换成ArcGIS要素(批量处理方案)
作为ArcGIS新手,刚拿到Isochrone的坐标数组确实会有点懵,我给你分两种方案,从简单手动到自动化批量处理,你可以根据自己的数据量来选:
一、半手动方案(适合少量多边形)
如果你的多边形数量不多,可以先把坐标转换成WKT格式(ArcGIS原生支持的文本格式),再导入生成要素:
调整坐标格式
你拿到的坐标是[纬度, 经度]的顺序,但ArcGIS里需要[经度, 纬度],而且多边形必须闭合(最后一个点和第一个点重复)。比如你给的示例要改成:POLYGON((-97.09152 32.19802, -97.05196 32.17197, -97.02786 32.16111, -97.01473 32.1298, -97.09152 32.19802))每个多边形对应一段这样的WKT字符串。
导入到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")
二、批量处理方案(适合多个多边形,存入表格)
如果要处理大量多边形,用表格批量导入效率最高:
准备数据源表格
用Excel或CSV做一个表格,至少包含两列:- 列1:要素名称(方便区分不同的Isochrone)
- 列2:WKT字符串(每个多边形对应一行,按上面的格式整理)
导入表格并生成要素
- 把表格导入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
相关产品推荐
相关产品推荐

