ArcGIS Python零基础脚本开发教程---1.1 Describe 函数


文章目录


前言

arcpy.Describe函数用于获取地理数据(要素类、栅格、图层等)的属性信息,返回一个包含数据属性(如数据类型、空间参考、字段等)的对象。

基本语法

python 复制代码
python
import arcpy
# 基本用法
desc = arcpy.Describe(input_data)

参数说明

input_data 输入的地理数据(路径字符串或图层对象)


一、 基础属性示例

python 复制代码
python
# -*- coding: utf-8 -*-
import arcpy
# 描述一个要素类
fc = r" E:\data\cities.shp"
desc = arcpy.Describe(fc)
# 基本信息
print("数据类型: {}".format(desc.dataType))       # 数据类型: ShapeFile
print("名称: {}".format(desc.name))              # 名称: cities.shp
print("基础名: {}".format(desc.baseName))         # 基础名: cities
print("目录: {}".format(desc.path))              # 目录:  E:\data
print("完整路径: {}".format(desc.catalogPath))    # 完整路径:  E:\data\cities.shp
print("扩展名: {}".format(desc.extension))        # 扩展名: shp

二、要素类相关属性

python 复制代码
python
# -*- coding: utf-8 -*-
import arcpy
# 仅适用于要素类
fc = r" E:\data\temp.mdb\DLTB"
desc = arcpy.Describe(fc)
if desc.dataType == "FeatureClass":
    print("要素类型: {}".format(desc.shapeType))  # 要素类型: Polygon
    # 空间参考信息
    spatial_ref = desc.spatialReference
    print("坐标系名称: {}".format(spatial_ref.name))   #坐标系名称: CGCS2000_3_Degree_GK_CM_126E
    print("投影类型: {}".format(spatial_ref.type))     #投影类型: Projected
    # 范围信息
    extent = desc.extent
    print("X最小值: {}".format(extent.XMin))   #X最小值: 379606.02316
    print("X最大值: {}".format(extent.XMin))   #X最大值: 379606.02316
    print("Y最小值: {}".format(extent.YMin))   #Y最小值: 4870197.481
    print("Y最大值: {}".format(extent.YMax))   #Y最大值: 4874916.48099

三、字段信息

python 复制代码
python
# -*- coding: utf-8 -*-
import arcpy
fc = r" E:\data\temp.mdb\DLTB"
desc = arcpy.Describe(fc)
# 获取字段信息
fields = desc.fields
for field in fields:
    print("字段名: {}".format(field.name))
    print("字段类型: {}".format(field.type))
    print("字段长度: {}".format(field.length))
    print("是否可为空: {}".format(field.isNullable))

四、 栅格数据属性

python 复制代码
python
# -*- coding: utf-8 -*-
import arcpy
# 描述栅格数据
raster = r"E:\data\a2.img"
desc = arcpy.Describe(raster)
if desc.dataType == "RasterDataset":
    print("栅格格式: {}".format(desc.format)) #栅格格式: IMAGINE Image
    print("波段数: {}".format(desc.bandCount)) #波段数: 1
    print("压缩类型: {}".format(desc.compressionType)) #压缩类型: RLE
    # 栅格范围
    extent = desc.extent
    print("栅格范围: {}".format(extent))  #栅格范围: 128.980865478516 42.7794821090849 129.728913685288 43.4220062741493 NaN NaN NaN NaN

五、工作空间和数据集

python 复制代码
python
# -*- coding: utf-8 -*-
import arcpy
# 描述工作空间
gdb = r"E:\data\geodatabase.gdb"
desc = arcpy.Describe(gdb)
if desc.dataType == "Workspace":
    print("工作空间类型: {}".format(desc.workspaceType))  # 工作空间类型: LocalDatabase
# 描述数据集
dataset = r"E:\data\geodatabase.gdb\Transportation"
desc = arcpy.Describe(dataset)
if desc.dataType == "FeatureDataset":
    print("数据集名称: {}".format(desc.name))   #工作空间类型: LocalDatabase

六、注意事项

不是所有属性都适用于所有数据类型,使用前用hasattr()检查

python 复制代码
 python
   if hasattr(desc, 'shapeType'):
       print(desc.shapeType)

Describe函数是ArcPy中最常用的函数之一,可以帮助你在处理地理数据前了解数据的属性和特征。


相关推荐
code2cat4 分钟前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
北京中科新远科技9 分钟前
高速交换机端口预算怎么做?下行、上联、拆分和冗余计算框架
开发语言·php
zh路西法16 分钟前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
xiaoye-duck41 分钟前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
后台模板学习1 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
2601_967987371 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor1 小时前
重构Time库的抽象设计
python·重构
AI源码1 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
第九序言T1 小时前
数据分析岗 Pandas 面试题 20 道(上):概念与读代码
python·数据分析·pandas·数据处理
Dmz丶1 小时前
前端转 AI 100 天 Day 37:Few-shot 与 CoT——让模型学会“推理”
python