python for ArcGIS 绘制上海市板块地图

  • 背景及思路
  • 完整代码
  • 结果截图
  • 代码解读
  • 后话

背景及思路

第一次用python操作 ArcGIS, 写下这篇博文记录一下。板块是房地产行业专有术语,很多维度特征都在板块层级讨论的。这不,要把上海市所有所有板块画出来,作为其他数据,如产业,人口数据的一个划分,作为最小研究地理空间单位。以前咨询过淘宝,把上海市板块用ArcGIS画出来大约需要150元人民币,恰好,手里头有板块边界的位置数据,即板块边界的经纬度,如下图所示

琢磨着,自己用python写个脚本,每个板块抽象成一个由多个折点构成的多边形,实现思路大致如下

  • 读数,即读取板块边界经纬度数据
  • 拆点,即采用split()函数将经纬度数据分割,构成折点
  • 连线,即将折点连起来形成封闭多边形,即板块

完整代码

# -*- coding: utf-8 -*-
"""
Project_name:drawing plate for shanghai
@author: 帅帅de三叔
Created on Wed Oct 30 15:16:44 2019
"""
import sys
arcpy_path = [r'D:\Python27\ArcGIS10.6\Lib\site-packages',r'D:\Program Files (x86)\ArcGIS\Desktop10.6\arcpy',r'D:\Program Files (x86)\ArcGIS\Desktop10.6\bin',r'D:\Program Files (x86)\ArcGIS\Desktop10.6\ArcToolbox\Scripts']
sys.path.extend(arcpy_path)
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys) #通过import引用进来时,setdefaultencoding函数在被系统调用后被删除了,所以必须reload一次
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
sys.setdefaultencoding('utf-8')import arcpy #导入地理处理模块
from arcpy import env #导入环境类
env.workspace=r"D:\python for ArcGIS\绘制上海板块"
env.overwriteOutput=True #是否开启复写
import pandas as pd #导入数据分析模块
plate_data=pd.read_excel("lat_lng.xlsx") #读取板块数据
rows,cols=plate_data.shape #数据框尺寸
lng_lat=plate_data[u'板块经纬度'] #经纬度数据
plate_name=plate_data[u'板块名称'] #板块名称#factoryCode = arcpy.GetParameterAsText(4490) #WGS_1984_World_Mercator投影坐标系工厂代码4490,3395
#spatial_ref = arcpy.SpatialReference(factoryCode) #设置空间参考参数
spatial_ref = arcpy.SpatialReference('China Geodetic Coordinate System 2000') #China Geodetic Coordinate System 2000 or WGS 1984 World MercatorpolygonPoints=arcpy.Array() #用来存放构成多边形的折点
polygonGeometryList=[] #用来存放多边形几何对象组for row in range(0,rows): #按行循环points=lng_lat[row].split(";") #折点for spot in points:xy=spot.split(",") #折点经纬度if len(xy)==2:point=arcpy.Point() #几何对象,用来存放折点对象point.id=row;point.X=float(xy[0]);point.Y=float(xy[1])  #转为点对象polygonPoints.add(point) #构成一串折点#print(point.id)polygon=arcpy.Polygon(polygonPoints,spatial_ref,"","") #利用折点构造多边形带空间参考polygonGeometryList.append(polygon) #把多边形追加到数组  polygonPoints.removeAll() #移除折点
result=arcpy.CopyFeatures_management(polygonGeometryList,r"D:\python for ArcGIS\绘制上海板块\plate_of_Shanghai.shp","POLYGON")arcpy.AddField_management(result, "title", "TEXT") #添加文本的title字段
with arcpy.da.UpdateCursor(result, ['title']) as cursor: #建立对从要素类或表返回的记录的读写访问权限。对图表层进行的title字段循环,以写入for i, row in enumerate(cursor):  #循环可迭代更新游标row[0] = plate_name[i] #将第i行的板块名称赋值给title字段的第i行cursor.updateRow(row) #更新表中的当前行

结果截图

图中淡黄绿色就是上海市的一个一个板块。

代码解读

思路简单代码清晰, 所有的板块做成一个列表 polygonGeometryList ,然后一起画出来,也可以通过游标insert的办法插入。形成shape文件后再用arcpy.AddField_management增加一个字段,用for循环增加字段的值,这里是板块名称。

后话

画出来的多边形两个相邻板块的公共分割线还存在不重合的情行,放大你会发现公共边会有空隙,以后要改进算法,消除这种拓扑错误。如果还有不懂的欢迎来微信公众号“三行科创”交流群。

1,python for ArcGIS 绘制上海市板块地图
2,python for ArcGIS 绘制上海市环线地图
3,python for ArcGIS 绘制北京市板块地图
4,python for ArcGIS 绘制广州市板块地图
5,python for ArcGIS 绘制深圳市板块地图
6,python for ArcGIS 绘制成都市板块地图
7,python for ArcGIS 绘制武汉市板块地图
8,python for ArcGIS 绘制杭州市板块地图
9,python for ArcGIS 绘制重庆市板块地图
10,python for ArcGIS绘制合肥市板块地图
11,python for ArcGIS 绘制南京市板块地图
12,python for ArcGIS绘制宁波市板块地图
13,python for ArcGIS 绘制沈阳市板块地图
14,python for ArcGIS 绘制苏州市板块地图
15,python for ArcGIS 绘制天津市板块地图
16,python for ArcGIS 绘制西安市板块地图
17,python for ArcGIS 绘制郑州市板块地图

python for ArcGIS 绘制上海市板块地图相关推荐

  1. python for ArcGIS 绘制北京市板块地图

    python for ArcGIS 绘制北京市板块地图 结果预览 数据 完整代码 代码解读 需要利用python的arcpy模块绘制出北京市板块地图如下 结果预览 数据 原始板块边界数据如下 完整代码 ...

  2. python for ArcGIS 绘制西安市板块地图

    python for ArcGIS 绘制西安市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出西安市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  3. python for ArcGIS 绘制南京市板块地图

    python for ArcGIS 绘制南京市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出南京市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  4. python for ArcGIS 绘制天津市板块地图

    python for ArcGIS 绘制天津市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出天津市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  5. python for ArcGIS 绘制郑州市板块地图

    python for ArcGIS 绘制郑州市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出郑州市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  6. python for ArcGIS 绘制宁波市板块地图

    python for ArcGIS 绘制宁波市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出宁波市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  7. python for ArcGIS 绘制苏州市板块地图

    python for ArcGIS 绘制苏州市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出苏州市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  8. python采用Basemap绘制完美中国地图

    python采用Basemap绘制完美中国地图 摘要 Basemap的安装 下载Basemap安装文件 安装 Pyproj& Basemap Basemap的Helloword 使用Shape ...

  9. python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)

    python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等) 1. 效果图 2. 原理 2.1 依赖模块及安装 2.2 工程目录 2.3 依赖文件latlng.txt 经纬度 3 源码 ...

最新文章

  1. 目标检测遮挡问题及解决方案汇总
  2. NVIDIA NeMo User Guide
  3. 134. Gas Station加油站
  4. MongoDB查询报错:class com.mongodb.MongoSecurityException: Exception authenticating MongoCredential...
  5. 记一次线上服务假死排查过程
  6. Win11有黑色边框怎么办 Win11有黑色边框的解决方法
  7. strust2 和 hibernate的整合------登录的实现
  8. anaconda的虚拟环境中查看已经安装好的包
  9. linux时间戳c语言,C语言实现字符转unix时间戳的简单实例
  10. 约瑟夫环(Data structure and algorithm -C language)—— #YU
  11. 使用Py-OpenCV(SIFT关键点)实现自然图像中的logo商标识别和定位
  12. 防火墙(firewall)
  13. css实现两列容器等高布局,CSS等高布局的实现方法
  14. 青春有多9,我爱我所有
  15. Bzoj5109: [CodePlus 2017]大吉大利,晚上吃鸡!
  16. java自学开发编程路线图
  17. 福布斯:阿里巴巴收购雅虎对大家都有利
  18. python期末考试重点_Python期末复习笔记
  19. Wondershare PDFelement for Mac v8.6.1 中文版 – 强大的PDF编辑工具
  20. Java程序员秋招三面蚂蚁金服,我总结了所有面试题,也不过如此

热门文章

  1. php设置只能在微信打开,PHP如何限制页面只能在微信自带浏览器访问?
  2. 如何建立一个微信公众号
  3. echarts的学习
  4. 企业如何选择外贸erp软件
  5. 【php基础入门】PHP中常用的数组操作使用方法笔记整理(推荐)
  6. Day31-35 - 玩转Linux操作系统
  7. apache2.2 设置最大连接数 默认是150个(最详细)
  8. 世界杯的比赛可以换6个人?
  9. Jama Contour 轻量型企业需求管理工具
  10. 基于容器特点和传统网络安全能力进行容器云安全规划设计