ArcMap批量附色操作,并保存mxd

news/2024/9/19 7:43:43/文章来源:https://www.cnblogs.com/sherioc/p/18401837

ArcMap批量附色操作,并保存mxd

1、对单文件操作

1、保存当前ArcMap中打开的shp文件为mxd文件

打开label_shp_root中的任意一个shp文件夹

image-20240905223954234

保存成mxd文件

image-20240905224127626

2、对当前在arcmap中打开的shp文件应用color配色

color配色是手动设置好一个shp文件夹的配色方案并保存成mxd文件

image-20240905224334797

应用color.mxd的配色方案后

image-20240905224520580

2、批量操作

1、shp文件保存为mxd文件(递归遍历文件夹及其子文件夹)

这里我设置num_folders_to_process = 5,保存了前5个

image-20240905224802435

image-20240905224920335

2、批量应用配色方案(对result文件夹中的mxd应用color配色)

image-20240905225424894

函数保存在ipynb文件。

核心函数

arcpy.mapping.UpdateLayer

image-20240905230345668

label_shp_root文件夹中的全部shp文件进行批量配色结果:

image-20240906124549152

代码

点击查看代码
#### 1、shp文件保存为mxd文件(递归遍历文件夹及其子文件夹)
import os
import arcpy
main_workspace = r"D:/desktop/label_shp_root"
result_folder = r"D:/desktop/label_shp_root_mxd"if not os.path.exists(result_folder):os.makedirs(result_folder)# 指定要处理的子文件夹数量
num_folders_to_process = 50folders_processed = 0 # 初始化计数器
subfolders = [os.path.join(main_workspace, d) for d in os.listdir(main_workspace) if os.path.isdir(os.path.join(main_workspace, d))]for subfolder in subfolders:if folders_processed >= num_folders_to_process:break  # 如果达到指定数量,停止遍历# 获取子文件夹名称subfolder_name = os.path.basename(subfolder)print("[processing subfolder]: ", subfolder_name)  # 打印正在处理的子文件夹名称# 构建对应的mxd文件路径mxd_path = os.path.join(result_folder, "{}.mxd".format(subfolder_name))mxd = arcpy.mapping.MapDocument("CURRENT")df = arcpy.mapping.ListDataFrames(mxd)[0]# 遍历子文件夹中的所有shp文件for filename in os.listdir(subfolder):if filename.endswith(".shp"):# 构建完整的文件路径shp_path = os.path.join(subfolder, filename)# 添加shp文件到地图文档layer = arcpy.mapping.Layer(shp_path)arcpy.mapping.AddLayer(df, layer)  # 保存mxd文件mxd.saveACopy(mxd_path)# 清空所有图层for lyr in arcpy.mapping.ListLayers(mxd, "", df):arcpy.mapping.RemoveLayer(df, lyr)folders_processed += 1  # 更新计数器# 提示完成
print("success processed {} subfolders, saved in {}".format(folders_processed, result_folder))####  2、批量应用配色方案(对result文件夹中的mxd应用color配色)
import os
import arcpy
# PATH
ROOT_PATH = r'D:/desktop/label_shp_root'
RESULT_MXD_PATH = r'D:/desktop/label_shp_root_mxd'
RESULT_MXD_COLORED_PATH = r'D:/desktop/label_shp_root_mxd_colored'  # 新的文件夹路径
MXD_PATH = r"D:/desktop/color.mxd" # color.mxd的路径if not os.path.exists(RESULT_MXD_COLORED_PATH):os.makedirs(RESULT_MXD_COLORED_PATH)# 获取color图层
color_GT_room_poly = "GT_room_poly"   
color_label_poly = "label_poly"
color_poly = "poly"
color_edges = "edges"
color_vertexes = "vertexes"
color_achor = "achor"
color_GT_bound = "GT_bound"
mxd_path = MXD_PATHfor mxd_file in os.listdir(RESULT_MXD_PATH):mxd = arcpy.mapping.MapDocument(mxd_path)df = arcpy.mapping.ListDataFrames(mxd)[0]origin_GT_room_poly_Layer = arcpy.mapping.ListLayers(mxd, color_GT_room_poly)[0]origin_label_poly_Layer = arcpy.mapping.ListLayers(mxd, color_label_poly)[0]origin_poly_Layer = arcpy.mapping.ListLayers(mxd, color_poly)[0]origin_edges_Layer = arcpy.mapping.ListLayers(mxd, color_edges)[0]origin_vertexes_Layer = arcpy.mapping.ListLayers(mxd, color_vertexes)[0]origin_achor_Layer = arcpy.mapping.ListLayers(mxd, color_achor)[0]origin_GT_bound_Layer = arcpy.mapping.ListLayers(mxd, color_GT_bound)[0]print('======get all origin color layers========')print(mxd_file)if mxd_file.endswith(".mxd"):# 构建完整的mxd文件路径full_mxd_path = os.path.join(RESULT_MXD_PATH, mxd_file)# 打开mxd文件mxd2 = arcpy.mapping.MapDocument(full_mxd_path)df2 = arcpy.mapping.ListDataFrames(mxd2)[0]GT_room_poly_Layer = arcpy.mapping.ListLayers(mxd2, "GT_room_poly", df2)[0]label_poly_Layer = arcpy.mapping.ListLayers(mxd2, "label_poly", df2)[0]poly_Layer = arcpy.mapping.ListLayers(mxd2, "poly", df2)[0]edges_Layer = arcpy.mapping.ListLayers(mxd2, "edges", df2)[0]vertexes_Layer = arcpy.mapping.ListLayers(mxd2, "vertexes", df2)[0]arcpy.mapping.UpdateLayer(df, GT_room_poly_Layer, origin_GT_room_poly_Layer, True)arcpy.mapping.UpdateLayer(df, label_poly_Layer, origin_label_poly_Layer, True)arcpy.mapping.UpdateLayer(df, poly_Layer, origin_poly_Layer, True)arcpy.mapping.UpdateLayer(df, edges_Layer, origin_edges_Layer, True)arcpy.mapping.UpdateLayer(df, vertexes_Layer, origin_vertexes_Layer, True)# 将修改后的mxd文件保存到新文件夹中new_mxd_path = os.path.join(RESULT_MXD_COLORED_PATH, mxd_file)print(new_mxd_path)mxd2.saveACopy(new_mxd_path)# 清空地图文档中的所有图层mxd = arcpy.mapping.MapDocument("CURRENT")df = arcpy.mapping.ListDataFrames(mxd)[0]for lyr in arcpy.mapping.ListLayers(mxd):arcpy.mapping.RemoveLayer(df, lyr)print('============success process =========================')print('All mxd files in result folder have been updated with color layers and saved to the new folder.')

data数据增强

1、在这里进行数据加载(但是感觉代码入侵了)

image-20240907000105735

或者是直接对label_shp_root进行数据变换,将文件夹大小变为原来6倍

2、但是发现实际上就是对所有点vertices进行同样操作(x,y 变换,也完全可以只x+1这样就是平移操作)

所以实际上只需要在这里进行数据复制5份(然后对vertieces进行简单操作)即可

image-20240907003251665

总感觉怪怪的,好像没有什么实际的操作

运行train.py

到第六个epoch 8%进度时候,内存爆了

image-20240907072832322

使用增强后的数据集

image-20240907125116939

bug。。。

vscode不能用了

image-20240907161258670

pycharm也出问题了

image-20240907161323891

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 忘记密码

最近需要搞几台虚拟机,之前的vm密码进不去 找了几个方法 不是很贴切, Centos7 重启页面 e--> grub ,在linux16 行 修改ro 为rw,最后加上 init=/bin/sh F10 或Ctrl+x进入这里的 rw代替 进os之后 mount -o remount,rw /passwd touch /.autorelabel exec /sbin/init

使用 `Roslyn` 分析器和修复器对.cs源代码添加头部注释

之前写过两篇关于Roslyn源生成器生成源代码的用例,今天使用Roslyn的代码修复器CodeFixProvider实现一个cs文件头部注释的功能, 代码修复器会同时涉及到CodeFixProvider和DiagnosticAnalyzer, 实现FileHeaderAnalyzer 首先我们知道修复器的先决条件是分析器,比如这里,如果要对代…

线性dp:LeetCode516 .最长回文子序列

LeetCode516 .最长回文子序列 题目叙述: 力扣题目链接(opens new window) 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s = "bbbab&…

202409071506,开始写代码,从0开始 验证基本架子

由于视频教程里面 用的VS2105 所以 照抄。开发环境是VS2015 ,WIN10. VS2015 在今天看来是一个很古老的开发环境了,估计都很难找到安装包。(各种安装包:https://www.cnblogs.com/zjoch/p/5694013.html) 用:vs2015.ent_chs.iso (3.88 GB (4,172,560,384 字节))这个安装…

PR出现冲突无法直接解决

举例:存在p-dev 分支,申请合入 master 分支,产生pr 无法直接自动将pr 合入到master中 需要在本地解决 解决:git checkout p-dev,切换分支dev git pull ,更新到最新的 git merge origin master, 此时会出现冲突,通过vscode 或者smartgit 去解决 解决完冲突的文件,需要…

彻底理解字节序

1.基本理论计算机发送数据从内存低地址开始. 计算机接收数据的保存从低地址开始.2.非数值型网络数据传输如上图例子所示,发送端发送了四个字节内容,分别为0x12,0x34,0x56,0x78,假设这四个字节不表示数值例如unsigned int,而是图片内容数据。发送端从低内存地址开始发送四个…

跳跃表

概述 跳跃表(SkipList)是链表加多级索引组成的数据结构。链表的数据结构的查询复条度是 O(N)。为了提高查询效率,可以在链表上加多级索引来实现快速查询。跳跃表不仅能提高搜索性能。也能提高插入和删除操作的性能。索引的层数也叫作跳跃表的高度查找 在跳跃表的结构中会首先从…

Docker 镜像的分层概念

来更深入地理解镜像的概念40.镜像的分层概念 来更深入地理解镜像的概念 ‍ 镜像的分层 镜像,是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等…

prometheus学习笔记之kube-state-metrics

一、kube-state-metrics简介Kube-state-metrics:通过监听 API Server 生成有关资源对象的状态指标,比如 Deployment、Node、Pod,需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据, 并不会存储这些指标数据, 所以我 们可以使用 Prometheus 来抓取这些数据然…

事务发件箱模式在 .NET 云原生开发中的应用(基于Aspire)

原文:Transactional Outbox in .NET Cloud Native Development via Aspire 作者:Oleksii Nikiforov总览 这篇文章提供了使用 Aspire、DotNetCore.CAP、Azure Service Bus、Azure SQL、Bicep 和 azd 实现 Outbox 模式的示例。源代码: https://github.com/NikiforovAll/cap-as…

Css 斜线生成案例_Css 斜线/对角线整理

一、Css 斜线,块斜线,对角线 块的宽度高度任意支持<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><tit…

mac升级node到指定版本

node版本升级到稳定版18.16.1 (1)node -v(2)npm cache clean -f 在使用npm cache clear --force清除缓存的时候,报npm WARN using --force Recommended protections disabled的错误,有可能是镜相源过期的问题换为npm cache verify(3) sudo n stable // 把当前系统的 Node 更…