Arcpy入门学习笔记(一):前期准备

Arcpy入门学习笔记(一):前期准备

使用Arcpy需要先安装ArcGIS或Pro,此处省略

环境配置

pycharm安装+ArcGIS 10.6提供的python2.7解释器

在【Settings】中的【Project】下的【Python Interpreter】选择ArcGIS自带的Python2.7

image-20240420222738713

Pycharm调试功能

断点:在代码行号之后的空白点击一下即可,再次点击取消

image-20240420224302787

调试:debug按钮或Shift+F9

image-20240420224418276

F8:单步,遇到断点后停止运行

F7:进入函数

Alt+shift+F7:进入自己编写的代码

shift+F8:跳出函数

F9:到下一个断点或退出调试

Alt+F9:移动到光标

# coding=utf-8
# @Time : 2024-04-19 23:30

# 调试用
def print_str(num):
    for _ in range(num):
        print("你好")

if __name__ == '__main__':
    a = 2
    print_str(a)
    b = a
    print(b)
    b = 1
    print_str(b)

Python2基础

数据类型

整型:整数的表示与运算

# coding=utf-8
# @Time : 2024-04-20 23:42

# 整数运算
num1 = 100
num2 = 200
print "两数之和为:", num1 + num2
print "两数之差为:", num1 - num2
print "两数之积为:", num1 * num2
print "两数之商为:", num1 / num2  # 在Python 2中,整数除法结果为整数(向下取整)
print "两数之商(浮点数)为:", float(num1) / num2

字符串:文本的表示与操作

# coding=utf-8
# @Time : 2024-04-20 23:42

# 字符串定义与拼接
greeting = "你好!"
name = "小明"
message = greeting + "," + name + "!"
print message

# 字符串切片与索引
sentence = u"浩瀚地学"
print "首字符:", sentence[0]
print "倒数第二个字符:", sentence[-2]
print "子串:", sentence[2:4]

# 字符串格式化
age = 999
info = "今年{}岁。".format(age)
print info

列表:有序可变序列

# coding=utf-8
# @Time : 2024-04-20 23:42

# 列表定义与操作
fruits = ["苹果", "香蕉", "橙子"]
print "列表元素个数:", len(fruits)
fruits.append("葡萄")
print "添加元素后:", repr(fruits).decode('string_escape')
fruits.insert(1, "梨")
print "插入元素后:", repr(fruits).decode('string_escape')
del fruits[2]
print "删除元素后:", repr(fruits).decode('string_escape')

元组:有序不可变序列

# coding=utf-8
# @Time : 2024-04-20 23:42

# 元组定义与操作
colors = ("红色", "绿色", "蓝色")
print "元组元素个数:", len(colors)
new_tuple = colors[:2] + ("紫色",)
print "创建新元组:", repr(new_tuple).decode('string_escape')

字典:键值对存储结构

# coding=utf-8
# @Time : 2024-04-20 23:42

# 字典定义与操作
student = {"姓名": "张三", "年龄": 20, "成绩": 95}
print "学生信息:", repr(student).decode('string_escape')
print "学生姓名:", student["姓名"]
student["成绩"] = 97
print "更新成绩后:", repr(student).decode('string_escape')

语句

条件判断:if…elif…else…

# coding=utf-8
# @Time : 2024-04-20 23:42

score = 86

if score >= 90:
    print "优秀"
elif score >= 80:
    print "良好"
else:
    print "需努力"

循环:for…in…,while…

# coding=utf-8
# @Time : 2024-04-20 23:42

# for循环遍历列表
for fruit in ["苹果", "香蕉", "橙子"]:
    print "喜欢吃的水果:", fruit

# while循环计数
count = 1
while count <= 5:
    print "这是第{}次循环".format(count)
    count += 1

循环控制语句:break、continue

# coding=utf-8
# @Time : 2024-04-20 23:42

# break用于提前终止循环
for i in range(10):
    if i == 5:
        break
    print i

# continue用于跳过当前循环迭代
for j in range(10):
    if j % 2 == 0:
        continue
    print j

函数

定义与调用

# coding=utf-8
# @Time : 2024-04-20 23:42

def print_str(name):
    """定义一个打印问候语的函数"""
    print "!{}!".format(name)

print_str("张三")  # 调用函数

参数传递:位置参数、关键字参数、默认参数、可变参数

# coding=utf-8
# @Time : 2024-04-20 23:42

def calculate_area(shape, length=10, width=5):
    """计算矩形或正方形面积"""
    if shape == "rectangle":
        area = length * width
    elif shape == "square":
        area = length ** 2
    else:
        raise ValueError("未知形状")
    return area

print "矩形面积:", calculate_area("rectangle", 4, 6)
print "正方形面积(使用默认边长):", calculate_area("square")

Python2注意点

1、以下形式的print后如果加括号就会输出中文乱码

# 整数运算
num1 = 100
num2 = 200
print("两数之和为:", num1 + num2)
print "两数之和为:", num1 + num2

2、列表、元组中的中文元素控制台输出乱码,需要加上repr解码

fruits = ["苹果", "香蕉", "橙子"]
print "列表元素个数:", len(fruits)
fruits.append("葡萄")
print "添加元素后:", fruits
print "添加元素后:", repr(fruits).decode('string_escape')

3、字符集设置,在开头加上两句中其中一个

# coding=utf-8
# -*- coding:utf-8 -*-

4、py2中汉字按照两个字符算,需要加u按照一个字符算

print (len("浩瀚地学"))
print (len(u"浩瀚地学"))

5、创建一个“sitecustomize.py“的Python文件后,粘贴到”G:\ArcGIS\Python27\ArcGIS10.6\Lib\site-packages“的目录下,之后重启ArcGIS,可以解决部分中文乱码问题;或者在自己的py文件开头加上以下代码

#coding=utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

image-20240420004523622

总结

Python2对于中文的支持特别不友好,尽量不要用中文

03-08
### arcpy 使用指南 #### 验证 Python 环境配置 为了确认 Python 和 `arcpy` 模块已经正确安装,在命令行中执行如下指令可验证环境配置状况[^1]: ```bash python -c "import arcpy" ``` 如果没有任何报错信息,则说明 Python 环境中的 `arcpy` 已经成功加载。 #### 自动化工作流示例 即使不具备编程背景的人士也能够利用 `arcpy` 来调用多达上千种内置工具,从而简化复杂的地理信息系统(GIS)任务流程。下面给出了段简单的代码片段用于演示基本功能[^2]: ```python import arcpy # 定义参数 input_features = 'path/to/input/feature' output_feature_class = 'path/to/output/feature' try: # 执行缓冲区分析 arcpy.Buffer_analysis(input_features, output_feature_class, "1 Kilometers") except Exception as e: print(f"An error occurred: {e}") ``` 这段程序实现了基于给定要素类创建指定距离范围内的缓冲区域的功能,并包含了异常捕获机制以便于排查可能出现的问题。 #### 设置工作空间与管理输出文件 在启动任何 GIS 数据处理之前,应当先设定好当前会话的工作目录以及其他必要的环境属性。这样做有助于保持项目结构清晰有序并且减少潜在冲突的发生概率[^3]. ```python import arcpy # 设定全局变量 workspace_path = r"C:\GISData" def setup_environment(): """初始化ArcPy运行时环境""" try: # 将工作空间设为上述路径下的所有子项均以此为基础进行访问 arcpy.env.workspace = workspace_path # 开启覆盖模式允许同名对象被新版本替换而不提示警告 arcpy.env.overwriteOutput = True except RuntimeError as err: raise SystemExit(err) if __name__ == '__main__': setup_environment() ``` #### 提升性能技巧——游标操作 当面对海量记录的数据源时,采用 `SearchCursor` 或者 `UpdateCursor` 可显著提升遍历速度及内存利用率。这里提供了个具体的应用场景实例:从 shapefile 文件读取 ID 字段及其对应的 XY 坐标值[^4]. ```python with arcpy.da.SearchCursor('shapefile.shp', ['OID@', 'SHAPE@XY']) as cursor: for feature in cursor: object_id, (longitude, latitude) = feature print(f'Feature #{object_id}: ({latitude}, {longitude})') ``` 以上就是关于 `arcpy` 的些基础知识介绍和技术要点分享。希望这些资料能帮助到正在学习或遇到困难的朋友!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩瀚地学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值