点击箭头处“蓝色字”,关注我们哦!!


问题来源

最近看到群里有小伙伴有这样的需求,大概意思是这样的。他有一个面数据,这么面数据有很多条记录(polygon),我们姑且把这个面叫A数据,还有另外一个B数据,也是有很多条记录(polygon)。现在需要A数据中每一条记录与B面求交,然后找出所有的相交面,在这些相交面中取面积最大者的一些属性填到A面的那条记录的属性表中,基本上流程就走完了。不知道我需求说明讲得清楚么。不过需要注意的是,这里需要遍历每一条记录来求交。

解决办法

好了,下面我把数据拿上来。A数据为下图的impBase.shp矢量数据。其中的DLMC为空数据,这个字段我们需要在B数据中拿过来。

而B数据,则为另外一个矢量面数据。有DLMC字段,现在需要将该字段经过上面的逻辑后取出来,用于填到上面A数据的DLMC字段。

我们来看一下实现代码。在这个例子中,我们将会使用属性表的遍历,在内存中创建要素类对象,添加字段,添加属性值,更新插入属性表。空间分析中的求交,游标遍历,令牌的使用,还有内存里数据的删除。花了一点时间调出来的。大家可以试着自己写一下。具体的逻辑可以参考我写的代码。

 1import arcpy 2imptAttrPath="D:/QQGroups/shp_inserct/impAtt.shp" 3imptBasePath="D:/QQGroups/shp_inserct/impBase.shp" 4 5arcpy.env.overwriteOutput = True 6 7 8outputSR = arcpy.Describe(imptBasePath).spatialReference 91011with arcpy.da.UpdateCursor(imptBasePath, ['FID','SHAPE@','DLMC']) as updateCursor:12    for updateRow in updateCursor:13     #createFC = "in_memory/"+str(updateRow[0])14     createFC = r"in_memory\tempUpdate"15     arcpy.CreateFeatureclass_management(16        "in_memory",17        "tempUpdate",18        "POLYGON", "", "", "",19        outputSR)2021     arcpy.AddField_management(createFC, "TDYT", "TEXT")2223     cur = arcpy.InsertCursor(createFC)24     newRow = cur.newRow()25     newRow.shape = updateRow[1]26     newRow.TDYT=updateRow[2]2728     cur.insertRow(newRow)2930     arcpy.Intersect_analysis([createFC,imptAttrPath],31                              out_feature_class="in_memory/IntersectShapeFile",32                              join_attributes="ALL", cluster_tolerance="#", output_type="INPUT")3334     area=0.035     dlmc=""36     with arcpy.da.SearchCursor("in_memory/IntersectShapeFile", ["Flag", "SHAPE@AREA", "DLMC"]) as maxCursor:37          for maxRow in maxCursor:38              tmpArea=maxRow[1]39              if area<=tmpArea:40                  area=tmpArea41                  dlmc=maxRow[2]4243     updateRow[2]=dlmc44     updateCursor.updateRow(updateRow)4546     #arcpy.Delete_management(["in_memory/"+str(updateRow[0]),"in_memory/IntersectShapeFile"])47     arcpy.Delete_management('in_memory')48print "finished"

在写代码的时候,特别要注意游标遍历方法的应用,字段在游标中是否存在。相交计算中需要注意设置要输出类型,有"LINE","INPUT",具体可以参考ArcGIS Desktop里面的相交工具中参数。还有内存的删除,使用数组的方式一一删除内存中的数据,可能会出现错误,至少我是没有试成功。

最后,将实现得到这样的结果。

往期回顾

ArcGIS开发&读取txt坐标数据,并创建面shapefile

ArcGIS开发&创建gdb,复制shapefile与更改属性表

ArcGIS开发&多幅影像批量拼接

ArcGIS开发&数据重新分类

【ArcGIS制图】&利用字段计算器编写脚本,对数据分类

【ArcGIS制图】&ArcGIS Catalog目录误删了文件怎么办

【ArcGIS制图】&ArcGIS中导入xy经纬度坐标数据不显示字段

openlayer开发&返回Geoserver发布的wfs指定字段信息

openlayer开发&绘制点、圆、多边形

欢迎加入arcpy开发qq学习群:487352121

做一个gis公众号

长按并关注我们

arcgis 属性表中起点终点创建线_【ArcGIS开发】shapefile矢量数据遍历、求交、与属性更新...相关推荐

  1. arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...

    本发明涉及GIS路网领域,尤其是涉及一种GIS单线路网自动生成双线路网 的方法. 背景技术: GIS路网是将真实道路,通过GIS数据的形式可视化表达出来.目前主流的 道路网模型是单线双属性的节点-路段 ...

  2. arcgis 属性表中起点终点创建线_连接起点与终点

    用法说明 需要两个输入点图层:一个对应起始点,一个对应目的地.下表汇总了起始点与目的地间的连接: 起始点数量目的地数量连接一个一个该起始点连接该目的地. 一个多个该起始点连接所有目的地. 多个一个所有 ...

  3. #ArcGis中如何对属性表中的字段进行顺序赋值??

    #ArcGis中如何对属性表中的字段进行顺序赋值?? 如题,昨天有小伙伴在公号私信里问我"如何在ArcGis中对属性表中的字段进行顺序赋值??"这个问题如果会一点python编程, ...

  4. 【板栗糖GIS】arcmap—如何使属性表中的数值四舍五入保留两位小数

    [板栗糖GIS]arcmap-如何使属性表中的数值四舍五入保留两位小数 目录 1. 修改前 2. 修改后 3. 代码 4. 解释 1. 修改前 2. 修改后 3. 代码 round( [Charact ...

  5. php类实例化js,php中如何实例化一个类_后端开发

    php实现字母数字混合验证码_后端开发 js中可以通过后缀加随机数[Math.random()]来实现刷新验证码,PHP验证传过来的参数code和当前session存储的验证码进行比较,若是正确返回1 ...

  6. arcgis导入坐标点转面_如何在ARCGIS将Excel中坐标点转线

    如何将Excel中坐标点转线 分为两种情况: 1.单个闭合线要素 Excel文件样式如下(保存为.xls): 注意:1.有一个点的序号,将按照该排序进行生成,如OBJECTID 2.闭合的线要素必须开 ...

  7. 属性表中的 <空> 空格 和 空白

    <空> 单元格中有"<空>"显示,按属性选择 工具中使用 ××× IS NULL 查询 空格 单元格有一个或多个占位符,按属性选择 工具中使用 ××× = ...

  8. hive查看表中列的信息命令_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  9. mysql删除表中的一列数据_在数据表中添加或删除一列

    注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容. 本页面是自动翻译的,可能包含语法错误或不准确之处. 我们的目的是使此内容能对你有所帮助. 可以在本页面底部告诉我们此信息是否对你有帮助吗? ...

  10. 给表中指定位置添加字段_利用VBA代码,轻松完成向工作表中添加指定图片到指定位置...

    VBA++ 题记:一剪闲云一溪月,一程山水一年华.一世浮生一刹那,一树菩提一烟霞.岁月静好,现世安稳.纵算云水漂泊,心若安宁,亦可淡若清风.希望见者与不见者都能安康.静下心,多学习有用的知识,多提高自 ...

最新文章

  1. 'yii\base\InvalidRouteException' with message 'Unable to resolve the request site/error.'
  2. python怎么读取文件-Python中怎么读写文件
  3. Python基础教程:字典和Json
  4. android仿ios弹框_在“提示”框中:iOS外观(在Android上运行),Google Maps作为Time Machine,下载Wii游戏保存...
  5. go语言快速刷《程序员面试金典》(1)
  6. 我们分析了50万条拼多多商品数据,告诉你到底是消费升级还是降级?
  7. php5.6 mongo 扩展,PHP5.6的安装及redis、memcache、mongo扩展
  8. Spring IOC注解开发
  9. schedule event mysql_mysql计划任务:event schedule
  10. java 停止定时器_实例助解java定时器设置及停止的方法
  11. 使用Duilib做的程序封装成DLL的显示加载与卸载问题
  12. 【考研计算机网络】 强化笔记
  13. 安卓如何更换wps黑金会员图标_wps图标(手机wps会员图标黑色)
  14. MCE | 线粒体和能量代谢的关系
  15. CyanogenMod编译
  16. 先搞懂Rust中的项目管理——Crate、bin crate、lib crate、workspace
  17. 教你快速使用AD7606的简单驱动方法--并行
  18. 一文详解ARP报文格式及工作原理
  19. Redis Desktop Manager 黑屏
  20. [Ant自动打包]ant执行命令的详细参数和Ant自带的系统属性

热门文章

  1. 将bean转换成键值列表
  2. 搜索引擎蜘蛛及网站robots.txt文件详解[转载]
  3. oracle 11g PL/SQL Programming学习三
  4. win8游戏开发教程开篇
  5. 关于python装饰器的总结
  6. 针对Web系统常用的功能测试方法浅析
  7. Understanding LSTM Networks(理解LSTM网络-colah‘s blog)
  8. MedianBlur(中值滤波/百分比滤波器)
  9. ArcGIS单波段提取
  10. 研究城市空间结构的入门级文献及书籍推荐(待更新)