前言

前一段时间,同事拿来的数据范围太大,用不了那么多(只需要一个乡镇的,结果拿来区县的),太多了加载也是问题。所以就让我给处理下。

由于文件较多,手动裁剪的话,我一个一个用ArcGIS工具箱中的工具进行裁剪,总体下来用了3个小时左右。后面由于需要再次缩小范围,这次再一个一个手动的话那就太坑了。我想到可以用Python写脚本来批量处理。

正文

在安装ArcGIS软件的时候是默认安装了Python的环境的,并且安装了arcpy库。但是,这个Python是2.7的,我以前学习的是用Python3.X的,我本来想着直接用3.X,但是在“import arcpy”的地方一直有问题,找了一些方法还是不行,最后只能用2.7的了。

下面是批量裁剪的 Python 脚本:

import arcpy
import glob
import os arcpy.CheckOutExtension('Spatial') # 指定裁剪前的目录
inws = r"D:\PythonClip\oldData" # 指定裁剪后的存放目录
outws = r"D:\PythonClip\Newdata" #指定shp范围边界文件,即目标区域的边界
mask = r"D:\PythonClip\panhuo.shp"
cluster_tolerance="0.0000001 DecimalDegrees" #利用glob包,将inws下的所有shp文件读存放到shps 中
shps = glob.glob(os.path.join(inws, "*.shp")) #循环shps 中的所有影像,进行按掩模提取操作
for shp in shps:
outname = os.path.join(outws, os.path.basename(shp)) #指定输出文件的命名方式
print outname
try:
arcpy.Clip_analysis(shp,mask,outname)
except Exception as e:
print e.message

由于文件较多,所以是循环指定目录下的shp文件,一个一个裁剪并输出保存。

在裁剪后,又需要把文件的X/Y坐标添加到属性列表里。我想这个也用脚本来写吧,好没问题下面也顺利完成:

import arcpy

def CalcXY():
try:
print "Set Env"
arcpy.env.workspace = "D:\\PythonClip\\Newdata" print "Start AddField And Calculate centroid" shps = arcpy.ListFiles("*.shp") for shp in shps:
fieldList = arcpy.ListFields(shp,"","Double")
fieldNames = []
for field in fieldList:
fieldNames.append(field.name)
if "X" not in fieldNames:
arcpy.AddField_management(shp,"X","DOUBLE",20,4)
arcpy.AddField_management(shp,"Y","DOUBLE",20,4)
arcpy.CalculateField_management(shp, "X", "!SHAPE.CENTROID.X!","PYTHON_9.3")
arcpy.CalculateField_management(shp, "Y", "!SHAPE.CENTROID.Y!","PYTHON_9.3")
print shp print "AddField And Calculate centroid End"
except Exception as e:
print e.message
CalcXY() CalcXY()

以上是添加X、Y的代码。

这些简单的脚本,在ArcGIS的帮助文档中都可以找到,而且每一个都有完整的例子。有一些Python基础的都可以实现。

ArcGIS + Python 批量裁剪、添加X/Y坐标脚本的更多相关文章

  1. python批量裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Imageimport matplotlib.pyplot as ...

  2. arcgis中使用excel中x,y坐标创建点问题

    文件——从x,y中添加,可以显示点的位置 右击图层导出数据时,出现无法绘制图形,生成shapefile文件的情况.经过排除数据发现 当x,y坐标值中出现null等异常值时,会出现上述无法导出的情况.

  3. arcgis影像批量裁剪代码

    # -*- coding:utf-8 -*- # Name: ExtractByMask_Ex_02.py # Description: Extracts the cells of a raster ...

  4. python批量json文件转xml文件脚本(附代码)

    场景:在使用了mask rcnn跑实验后标注了大量地json格式文件,现在打算使用yolo和faster rcnn 跑实验 所以需要将之前地json文件转为xml     但是找了很久,没发现有批量处 ...

  5. python 批量扫描mongodb 未授权访问脚本

    需要 pymongo库easy_install pymongo脚本: import socket import sys import pymongo ipcons = [] def Scanner(i ...

  6. arcgis中给属性文件加x y坐标

    两种方式: 一, 1在ArcGIS 9.2桌面软件arcview级别以上软件中,加载要添加x,y坐标的数据,打开属性表,添加X.Y字段 2 右键X字段,选择calculate geometry,如果颜 ...

  7. Python批量自动裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...

  8. ArcGIS Python编程案例-电子资料链接

    ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...

  9. arcpy arcgis python实例教程--原点夹角距离定义线(坐标正算)

    arcpy arcgis python实例教程--原点夹角距离定义线(坐标正算) 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 此地理处理工具 ...

随机推荐

  1. 基于libuv的TCP设计(一)

    本人一直在寻找一个跨平台的网络库,boost与ACE比较庞大,不考虑.对比了libevent,libev,libuv后,最终选择了libuv.可libuv文档少,例子也简单,对于tcp只有个echo- ...

  2. 重磅!滴滴跨端框架Chameleon 1.0正式发布

    滴滴在 GitHub 上开源的跨端解决方案 Chameleon(简写 CML)正式发布 1.0 版本,中文名卡梅龙:中文意思变色龙,意味着就像变色龙一样能适应不同环境的企业级跨端整体解决方案,具有易用 ...

  3. PHP中奖概率写法

    PHP中奖概率写法 <pre><?phpheader("Content-type: text/html; charset=utf-8");/* * 经典的概率算法 ...

  4. 漏洞复现之Redis-rce

    通过主从复制 GetShell Redis主从复制 Redis是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库.但如果当把数据存储在单个Redis的实例中,当读写体量 ...

  5. Mysql 排序优化

    原文链接:https://www.cnblogs.com/moss_tan_jun/p/6021822.html https://blog.csdn.net/lb517290079/article/d ...

  6. [NPM错误]npm ERR! Unexpected end of JSON input while parsing near ‘’

    [错误描述] npm ERR! Unexpected end of JSON input while parsing near ‘  ’ [前提描述] 在安装vue2-editor时,中断暂停了,再次 ...

  7. 在Ubuntu下安装qt

    安装qt前的准备: 安装基础开发包,主要gcc,g++等: sudo apt-get install build-essential 1. 使用qt-opensource-linux-x86-5.5. ...

  8. 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. 论文地址:http ...

  9. (一)Spring Security Demo 登陆与退出

    文章目录 配置springSecurityFilterChain过滤器 配置身份验证 加载配置 登陆项目 退出 下面的代码需要spring环境的支持: 看这个系列博客之前,需要这个博客,大概了解下 s ...

  10. golang之结构体使用注意事项和细节

    1. 结构体的所有字段在内在中是连续的 2. 结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的字段(名字.个数和类型) 3. 结构体进行type重新定义(相当于取别名),Golang认 ...