乐于分享
好东西不私藏

openclaw生成GIS经纬网线,可以下载数据,有源代码

openclaw生成GIS经纬网线,可以下载数据,有源代码
import arcpyimport os设置工作空间desktop = os.path.join(os.path.expanduser("~"), "Desktop""GIS")os.makedirs(desktop, exist_ok=True)arcpy.env.workspace = desktoparcpy.env.overwriteOutput = True输出路径output_path = os.path.join(arcpy.env.workspace, "world_grid_lines_3deg.shp")经纬度间隔lon_step = 3lat_step = 3删除已存在的文件if arcpy.Exists(output_path):    arcpy.Delete_management(output_path)    print("已删除旧文件")创建线要素类arcpy.CreateFeatureclass_management(    out_path=arcpy.env.workspace,    out_name="world_grid_lines_3deg.shp",    geometry_type="POLYLINE",    template=None,    has_m="DISABLED",    has_z="DISABLED",    spatial_reference=arcpy.SpatialReference(4326)  # WGS84)添加字段arcpy.AddField_management(output_path, "jd""DOUBLE")arcpy.AddField_management(output_path, "wd""DOUBLE")arcpy.AddField_management(output_path, "type""TEXT", field_length=20)print("要素类已创建,开始添加要素...")使用插入游标添加要素with arcpy.da.InsertCursor(output_path, ["SHAPE@""jd""wd""type"]) as cursor:# ========== 生成经线(固定经度,纬度变化) ==========print("正在生成经线...")for lon in range(-180181, lon_step):        array = arcpy.Array([            arcpy.Point(lon, -90),            arcpy.Point(lon, 90)        ])        polyline = arcpy.Polyline(array, arcpy.SpatialReference(4326))        cursor.insertRow([polyline, lon, -999"meridian"])# ========== 生成纬线(固定纬度,经度变化) ==========print("正在生成纬线...")for lat in range(-9091, lat_step):        array = arcpy.Array([            arcpy.Point(-180, lat),            arcpy.Point(180, lat)        ])        polyline = arcpy.Polyline(array, arcpy.SpatialReference(4326))        cursor.insertRow([polyline, -999, lat, "parallel"])统计结果result_count = int(arcpy.GetCount_management(output_path)[0])分别统计经线和纬线meridian_layer = arcpy.SelectLayerByAttribute_management(output_path, "NEW_SELECTION""type = 'meridian'")meridian_count = int(arcpy.GetCount_management(meridian_layer)[0])parallel_layer = arcpy.SelectLayerByAttribute_management(output_path, "NEW_SELECTION""type = 'parallel'")parallel_count = int(arcpy.GetCount_management(parallel_layer)[0])arcpy.SelectLayerByAttribute_management(output_path, "CLEAR_SELECTION")print(f"\n[OK] 文件已生成:{output_path}")print(f"[OK] 经线数量:{meridian_count")print(f"[OK] 纬线数量:{parallel_count")print(f"[OK] 总线条数:{result_count")print(f"[OK] 经度间隔:{lon_step")print(f"[OK] 纬度间隔:{lat_step")print(f"[OK] 字段:jd (经度), wd (纬度), type (线类型)")print(f"[OK] 坐标系统:EPSG:4326 (WGS84)")
后台回复“经纬网”,获得矢量数据,包括45度斜线