Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

news2024/11/7 13:36:15

前言

近来公司有开发Arcgis脚本工具的需求,我就去学了一下用Arcpy来操作Arcgis的数据,今天学习了字段计算,将学习成果记录如下。

arcpy帮助文档传送门:https://resources.arcgis.com/zh-cn/help/main/10.2/
在这里插入图片描述

一、字段计算

1、以python函数的形式进行字段计算

我们打开字段计算器,可以调用系统给我们提高好的函数来对字段进行计算,如果我们需要自定义字段计算函数呢?那该如何操作?
在这里插入图片描述

点击显示代码块,调出预逻辑脚本代码,可以把我们自定义的python函数写在预逻辑脚本代码中,这样我们就可以调用自定义的python函数对字段进行计算了。

在这里插入图片描述

点击确定,CL字段计算成功,结果如下:
在这里插入图片描述

实例代码如下:

def reCal(fd):
    num = 0
    if fd =='村庄':
        num = 1
    else:
        num = 2
    return num

2、以python脚本形式进行字段计算

如果每次都要将python函数写到预逻辑脚本代码中,很麻烦,我们直接以python脚本的形式,对字段进行计算。

脚本代码如下:

import arcpy
import sys

# 设置工作空间
arcpy.env.workspace = r'E:\arcpy_study\Arcpy实例教程(数据)_小景空间_原始\3Arcpy初识字段计算和python脚本\data.gdb'

# 遍历所有要素(遍历所有记录)
# 要遍历的图层,获取游标,遍历游标
cursor = arcpy.UpdateCursor("DLTB")
# 遍历每一行
for row in cursor:
    # 获取该行的DLMC列的值
    mc = row.getValue("DLMC")
    print mc
    if mc == u'村庄':
        num = 1
    else:
        num = 2
    # 设置该行的CL列的值为num
    row.setValue("CL", int(num))
    # 更新该行
    cursor.updateRow(row)

图层和文件地理数据库结构如下:
在这里插入图片描述

具体每一条代码的含义,我以写好注释,计算结果和方法一 一样。

二、mxd批量导出为jpg

我们需要用到osarcpy这两个库来实现这个功能。os库用来对文件夹下的mxd文件进行遍历,arcpy将mxd文件导出为jpg格式。

代码如下:

import os
import arcpy

# 解决python2.7中文路径乱码问题
path = unicode(r"E:\arcpy_study\Arcpy实例教程(数据)_小景空间_原始\4什么是Arcpy", 'utf-8')

# 遍历文件夹下的所有文件
# afile = 地图1.mxd  ........
for afile in os.listdir(path):
    # 遍历所有mxd文件
    if afile[-3:] == 'mxd':
        print afile
        # 获取mxd文件完整路径,装换为mxd类
        mxd = arcpy.mapping.MapDocument(os.path.join(path, afile))  # 拼接路径
        # 将mxd输出为jpg图片(mxd类, 输出路径,dpi)
        arcpy.mapping.ExportToJPEG(mxd, os.path.join(path, afile[:-3] + 'jpg'), resolution=300)

三、合并数据库

# -*- coding: UTF-8 -*-
"""
@Date   :2023/6/25
"""
# 实现功能:将多个gdb合并成一个gdb(文件地理数据库)
import os
import arcpy


# 合并数据库函数
# (数据库引入路径, 输出路径,输出名称)
def MergeFileGDB(inPath, outPath, outName):
    # 设置工作空间为数据库所在的文件夹
    arcpy.env.workspace = inPath
    # 设置合并后的数据的输出路径  os.sep = \
    mergeFilePath = outPath + os.sep + outName
    # 获取所有文件地理数据库
    workspaces = arcpy.ListWorkspaces('*', 'FileGDB')

    # 遍历所有文件地理数据库
    for workspace in workspaces:
        print workspace
        # 合并数据库时,将工作空间变换为要合并的数据库
        arcpy.env.workspace = workspace
        # 判断输出的数据库是否存在
        mergeFileExist = os.path.exists(mergeFilePath)
        print mergeFileExist
        # 如果输出的数据库存在的话,采用追加的方式合并新的数据库,将新的数据库追加到输出的数据库中
        if mergeFileExist:
            featureClasses = arcpy.ListFeatureClasses()
            # 遍历数据库中的所有图层(要素类)
            for fc in featureClasses:
                print fc
                # 只合并LCA图层
                if fc == "LCA":
                    # os.path.splitext(fc)[0] = LCA
                    # (当前数据库中要合并的图层,输出数据库中要合并的图层)
                    arcpy.Append_management(fc, os.path.join(mergeFilePath, os.path.splitext(fc)[0]), "TEST", "", "")
                    break
                else:
                    continue
        # 如果输出数据库不存在,则先创建数据库,将当前数据库的要素类输出到输出数据库的要素类
        else:
            # 创建文件地理数据库
            arcpy.CreateFileGDB_management(outPath, outName)
            featureClasses = arcpy.ListFeatureClasses()
            for fc in featureClasses:
                if fc == "LCA":
                    # (当前数据库要合并的图层,输出数据库的路径,输出数据库中要合并的图层)
                    arcpy.FeatureClassToFeatureClass_conversion(fc, mergeFilePath, os.path.splitext(fc)[0])

if __name__ == '__main__':
    inPath = unicode(r'E:\arcpy_study\Arcpy实例教程(数据)_小景空间_原始\5Arcpy脚本批处理\data', 'utf-8')

    outPath = unicode(r'E:\arcpy_study\Arcpy实例教程(数据)_小景空间_原始\5Arcpy脚本批处理\data', 'utf-8')

    outName = 'Merge48.gdb'

    MergeFileGDB(inPath, outPath, outName)

 唧唧复唧唧,木兰当户织。不闻机杼声,唯闻女叹息。

问女何所思,问女何所忆。女亦无所思,女亦无所忆。昨夜见军帖,可汗大点兵,军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄,愿为市鞍马,从此替爷征。

东市买骏马,西市买鞍鞯,南市买辔头,北市买长鞭。旦辞爷娘去,暮宿黄河边,不闻爷娘唤女声,但闻黄河流水鸣溅溅。旦辞黄河去,暮至黑山头,不闻爷娘唤女声,但闻燕山胡骑鸣啾啾。

万里赴戎机,关山度若飞。朔气传金柝,寒光照铁衣。将军百战死,壮士十年归。

归来见天子,天子坐明堂。策勋十二转,赏赐百千强。可汗问所欲,木兰不用尚书郎,愿驰千里足,送儿还故乡。

爷娘闻女来,出郭相扶将;阿姊闻妹来,当户理红妆;小弟闻姊来,磨刀霍霍向猪羊。开我东阁门,坐我西阁床,脱我战时袍,著我旧时裳。当窗理云鬓,对镜帖花黄。出门看火伴,火伴皆惊忙:同行十二年,不知木兰是女郎。

雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雄雌? 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux学习之内核升级

wget --no-check-certificate https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.14.tar.xz下载源代码。 yum install -y gcc gcc-c make ncurses-devel openssl-devel elfutils-libelf-devel安装必要的依赖包。 完成之后,显示如下: …

openEuler操作系统和openGauss数据库

文章目录 1. openEuler操作系统2. openGauss数据库2.1 系统自带库2.1.1 允许所有地址访问端口2.1.2 创建远程登录用户 2.2 安装5.0 版本2.2.1 下载2.2.2 安装2.2.3 测试 1. openEuler操作系统 镜像下载地址 https://www.openeuler.org/zh/download 选一个下载 安装 按提示安…

【kubernetes系列】Kubernetes中的重要概念(三)

在实际的工作中,我们使用Kubernetes 通常不会直接创建 Pod,而是通过 各种 Controller 来管理 Pod 的。Controller 中定义了 Pod 的部署特性,比如有几个副本,在什么样的 Node 上运行等。为了满足不同的业务场景,Kuberne…

VMware Workstation 17 的安装

一、简介 VMware Workstation 17.0是一款功能非常强大的虚拟机,可以帮助用户在Windows系统上同时开启多个系统,不仅能在虚拟机上安装上不同的操作系统,比如Mac、Linux以及Windows10/11等,还能与云技术和容器技术(如 D…

【金融量化】ETF基金是什么?有什么特点?

1 含义 ETF(交易型开放式指数基金)是以某一选定的指数所包含的成分证券或商品为投资对象,依据构成指数的证券或商品的种类和比例,采取完全复制或抽样复制,进行被动投资的指数基金。ETF不但具有传统指数基金的全部特色…

vue导出excle单sheet文字居中表头加粗显示

效果图: 首先下载依赖 npm install xlsx --save npm install xlsx-style --save在需要导出excle的vue文件中导入依赖 import XLSX from "xlsx" import XLSXStyle from xlsx-style在method中定义 methods:{// 格式化formatJson(filterVal, jsonData)…

月近万次发布,故障率<4‰如何做到?去哪儿测试左移重难点揭秘!

一分钟精华速览 去哪儿发布的数据显示,在过去一年中,其发布故障率始终保持在 4‰ 以下并不断降低。作为一家出行旅游服务平台,去哪儿网如何在复杂的业务场景下,仍能保持如此低的故障率?其中功能测试左移功不可没。 本…

高质量编程-编码规范之代码格式和注释

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 本次文章不仅仅是在 go 中主要注意,在编写其他语言中也同样重要…

单片机介绍选型(嵌入式学习)

单片机介绍&选型 单片机介绍常见的单片机单片机如何选型 单片机介绍 单片机(Microcontroller)是一种集成电路芯片,具有处理器核心、存储器、输入/输出接口和各种外设的功能。 单片机是单片微型计算机的简称,MCU是Microcontro…

15. WebGPU 相机

在上一篇文章中,我们必须将 F 移到视锥体前面,因为 mat4.perspective 函数 将眼睛放在原点 (0, 0, 0) 并且把对象 放到 位于眼前 -zNear 到 -zFar 之间的视锥体中。这意味着,任何想要显示的东西,都需要放在这个空间里。 在现实世…

对英雄联盟英雄属性数据的预处理及相似度矩阵计算

目录 一、引言 二、任务1 1、填充缺失值 2、用中位数填充“生命值”属性列缺失值 3、 用均值填充“生命值”属性列缺失值 三、任务2 注:英雄联盟英雄属性数据资源可在博客资源中自行获取。 一、引言 英雄联盟作为一款古早的刀塔游戏,可谓之刀塔游…

jumpserver-v2.2.2【部署教程】

目录 什么是 跳板机 跳板机的缺点 使用堡垒机的优势 jumpserver的组件 【1】时间同步 【2】安装依赖 【3】修改数据库字符集、创建远程用户 【4】创建python的虚拟环境,用于专门运行jumpserver的环境 【5】获取jumpserver的代码 【6】安装编译环境依赖 …

【管理系列-09】软件成本怎么评估,知己知彼才能做软件造价

项目来了,总要叫来几个人,讨论一下成本是多少,能不能接,作为研发经理,能够较为合理的评估成本是一项必备技能,如何科学合理的评估,达到对内对外都满意,我想这是每个研发经理的必修课…

管理类联考——逻辑——知识篇——分析推理——四、数字——haimian

数字 题型识别 与数字相关的分析推理题在逻辑科目中扮演着非常重要的角色,可能涉及方程、不等式、分子与分母比值关系、百分比、概率、集合运算等,可结合数学方法或利用数字规律进行解题。 思维导图 常用公式 从某种意义上说,数学本身就是…

五、浅析[ElasticSearch]底层原理与分组聚合查询

目录 一、ElasticSearch文档分值_score计算底层原理1.boolean model2.relevance score算法2、分析一个document上的_score是如何被计算出来的 二、分词器工作流程1.character filter、tokenizer、token filter2、内置分词器的简单介绍3、定制分词器3.1默认的分词器--standard3.…

《教我兄弟学Android逆向13 xpose改机开发01-环境设置》

上一篇 《教我兄弟学Android逆向12 编写xposed模块》 我们了解了xpose的基本原理并一起搭建了xpose的hook环境,你也很好的完成了课后作业,但是通过后面的测试练习你发现xpose在不同系统环境的安装方法是不一样的,在我们之前的低系统手机上面直接安装就能…

LNMP六个实验

目录 访问状态统计配置 基于授权的访问控制 基于客户端的访问控制 基于域名的 Nginx 虚拟主机 基于IP 的 Nginx 虚拟主机 基于端口的 Nginx 虚拟主机 总结 访问状态统计配置 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块 修改 nginx.conf 配置文件,…

Python基础四

目录 一、Python数据类型--列表 1.列表的下标 2.访问列表中的元素 3.更新列表元素 4.删除列表元素 5.列表脚本操作符 6.列表截取与拼接 截取 拼接 7.嵌套列表 8.列表比较 二、Python内置函数--列表相关 一、Python数据类型--列表 Python中的列表类似于java的数组 列…

Rust语言从入门到入坑——(7)Rust 错误处理

文章目录 0 引入1、可恢复错误2、可恢复错误递归3、不可恢复错误4、kind 方法5、总结 0 引入 Rust 有一套独特的处理异常情况的机制,程序中一般会出现两种错误:可恢复错误和不可恢复错误。 1、可恢复错误的典型案例是文件访问错误,如果访问一…

RVEA算法

RVEA 1 目标函数2 预备知识3 参考向量引导选择4 更新参考向量5 流程6 代码7 运行效果 1 目标函数 min ⁡ X f ( X ) ( f 1 ( X ) , f 2 ( X ) , . . . , f M ( X ) ) \min_{\small{X}} \pmb{f(\small{X})} (f_1(\small{X}), f_2(\small{X}), ..., f_M(\small{X})) Xmin​f(X)…