『Arcpy』 arcpy应用基础

遇到的使用aracpy 处理数据的方法!

环境变量设置

arcpy.env.workspace到底是个什么东西?

环境变量可以在应用程序级别以及工具级别下进行设置,应用程序级别环境设置是最高级别,也是应用于所有工具的默认设置。工具级别环境设置会直接继承来自应用程序级别的环境设置。

Python脚本中可以通过arcpy中的env类来获取并设置环境变量,这些变量都是读/写属性。应用程序级别和工具级别环境设置都可以在脚本中调用且都可以应用于通过脚本运行的所有工具。

需要注意的是,在脚本中的环境设置仅应用于当前执行的脚本。
脚本中最为常用的环境变量设置就是arcpy.env.workspace(),该变量用于定义当前脚本的工作目录(或者称为工作空间)。由于在脚本中设置了当前工作空间,脚本的其他位置也就不需要引用数据集的完整路径,这会让代码更为简洁,不过还是需要引用工作空间下的数据集名称。

代码为例:

arcpy.env.workspace = r'd: \ Data '   
Rasters = arcpy.ListRasters ( "*",' TIF ')   

Rasters相当于获取了D:\Data目录目录中所有TIF格式的数据

另外一个简单的例子:

import arcpy 
arcpy.env.workspace = "C:/ArcpyBook/Ch6" 
arcpy.Buffer_analysis("Streams.shp","Streams_Buffer.shp","200 Feet")
print arcpy.getMessages()

相当于对C:/ArcpyBook/Ch6目录中的Streams.shp文件进行200Feet的缓冲区分析,同时将缓冲结果保存在C:/ArcpyBook/Ch6目录下的Streams_Buffer.shp文件。

参考:arcpy.env.workspace到底是个什么东西?

Exists检查文件是否存在

语法:arcpy.Exists(<dataset>)

import arcpy
arcpy.env.workspace = r"E:\gis class\arcpy_1"
fc = "point.shp"
arcpy.Exists(fc)     # 返回结果为true or false

Describe函数描述数据

语法:<variable> = arcpy.Describe(<input dataset>)

arcpy.env.workspace = r"E:\gis class\arcpy_1"
fc = "point.shp"
desc = arcpy.Describe(fc)       # 获取包含数据集属性的描述对象
print desc.shapeType        # 获取该要素类的形状类型
print desc.path         #获取存储路径
sr = desc.spatialReference      #获取空间参考
print sr.name

输出结果:

Point
E:\gis class\arcpy_1
Unknown

读取栅格数据的脚点坐标、影像名、坐标系

import arcpy
arcpy.env.workspace="C:\Python27"
try:
    descRaster=arcpy.Describe("D:\\data3\\4026.0-540.0.tif")  #os.path.join(root,file)
    ext=descRaster.extent
    name1=descRaster.name
    print("XMin: %f" % (ext.XMin))
    print("XMax: %f" % (ext.XMax))
    print("YMin: %f" % (ext.YMin))
    print("YMax: %f" % (ext.YMax))
    print"name,is,%s"%name1

返回数据(列表函数)

ListFeatureClasses函数

ListFeatureClasses函数返回当前工作空间中的要素类列表

语法:ListFeatureClasses ( { wild_card }, { feature_type }, { feature_dataset } ) { }为可选参数

例:ListFeatureClasses ( {“w*”, “point” ) ——返回文件名以w开头,并且要素类型是点的所有要素类

import arcpy
arcpy.env.workspace = r"E:\gis class\arcpy_1"
fclist = arcpy.ListFeatureClasses()     # 返回包含要素类的列表
print fclist

输出结果:

[u'line.shp', u'point.shp']

ListRasters函数

ListRasters函数返回当前工作空间中的矢量数据集列表

语法:ListRasters ( { wild_card }, { raster_type } ) 与ListFeatureClasses函数相似

import arcpy
arcpy.env.workspace = r"E:\gis class\arcpy_1"
rslist = arcpy.ListRaster("","tif")     #返回该工作空间中数据类型为TIFF影像的栅格数据集列表
print rslist

ListFields函数

ListFields函数返回某个要素类属性表的字段对象列表

语法:ListFields( dataset , { wild_card }, { field_type} )

ListFields函数返回的是字段列表对象,读取列表属性要使用for循环

import arcpy
arcpy.env.workspace = r"E:\gis class\data0408"
fc = "现状道路.shp"
fieldlist = arcpy.ListFields(fc)   # 返回字段列表对象,包括(字段名、别名、类型和长度)
for field in fieldlist:    # ListFields函数返回的是对象,所以要使用for循环读取对象的各个属性
    print "field name :{0} " " field length : {1} " " filed type : {2}".format(field.name,str(field.length),field.type

输出结果

field name :FID  field length : 4  filed type : OID
field name :Shape  field length : 0  filed type : Geometry
field name :Layer  field length : 254  filed type : String
field name :a  field length : 4  filed type : SmallInteger

栅格数据进行投影坐标转换

将栅格数据集从一种投影变换到另一种投影。

语法

ProjectRaster_management (in_raster, 
                          out_raster, 
                          out_coor_system, 
                          {resampling_type},
                          {cell_size}, 
                          {geographic_transform}, 
                          {Registration_Point},
                          {in_coor_system})

参数:

  • in_raster :输入栅格数据集。
  • out_raster :要创建的输出栅格数据集。
  • out_coor_system :输入栅格待投影到的目标坐标系。默认值将基于“输出坐标系”环境设置进行设定。
  • 其它为可选参数。

示例

对影像数据进行批量投影坐标转换:

import arcpy
import fnmatch
import os

def projecttaster(src, dst):
    names = fnmatch.filter(os.listdir(src), '*.tif')
    src_files = [os.path.join(src, name) for name in names]
    out_coor_system = os.path.join(src, "WGS 1984.prj")
    dst_files = [os.path.join(dst, name) for name in names]

    for src_file, dst_file in zip(src_files, dst_files):
        arcpy.ProjectRaster_management(src_file, dst_file, out_coor_system)
        print ('%s    has done!'%src_file)

if __name__ == '__main__':
    src = r''
    dst = r''
    projecttaster(src, dst)

参考:投影栅格

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2021 HG | 访问人数: | 浏览次数:

请我喝瓶农夫三拳吧~

支付宝
微信