IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Arcgis批量图斑生成图片 -> 正文阅读

[Python知识库]Arcgis批量图斑生成图片

任务需求

实际作业中,往往需要导出一些经典的案例图斑用作参考。而能称之为经典的图斑大部分都会来源于多个不同的数据源中。接下来就实现跨数据源根据指定BSM导出指定图斑图片:

环境与数据准备

1、arcgis10.2.2
2、准备一份数据源,此处使用GDB作为数据源。
3、准备提供地图要素参考信息的地图文档.mxd文件,可以在里面设置图斑信息。

在这里插入图片描述

代码实现

# encoding:utf-8
import os.path
import arcpy
import sys
import time

default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)


def u(s):
    if isinstance(s, unicode):
        return s
    elif isinstance(s, str):
        try:
            return s.decode('utf-8')
        except Exception as e:
            pass
        try:
            return s.decode('cp936')
        except Exception:
            print 'Unknow coding of {0}'.format(s)
    else:
        return u(str(s))


if __name__ == '__main__':
    try:
        output_path = r'D:\批量照片导出测试'
        source_path = r'D:\批量照片导出测试\数据源.gdb'
        mxd_file = u(r'D:\批量照片导出测试\模板.mxd')
        tbbsms = ['A1', 'A2', 'B1', 'B2']  #

        arcpy.env.overwriteOutput = True
        start_time = time.time()
        my_mxd = arcpy.mapping.MapDocument(mxd_file)
        data_frame = arcpy.mapping.ListDataFrames(my_mxd)[0]
        tar_lyr = None
        for lyr in arcpy.mapping.ListLayers(my_mxd, "", data_frame):
            print lyr.name
            if lyr.name == 'DL':
                tar_lyr = lyr

        last_dataSource = tar_lyr.dataSource
        for bsm in tbbsms:
            tar_ly = bsm[0:1]
            next_dataSource = tar_ly
            if next_dataSource != last_dataSource:
                tar_lyr.replaceDataSource(source_path, 'FILEGDB_WORKSPACE', next_dataSource)
                last_dataSource = next_dataSource

            # 按属性选择
            arcpy.SelectLayerByAttribute_management(tar_lyr, "NEW_SELECTION", "BSM='{0}'".format(bsm))
            # tar_lyr.definitionQuery = 'BSM =' + "'" + bsm + "'"
            data_frame.zoomToSelectedFeatures()  # 缩放至选中要素
            arcpy.RefreshActiveView()  # 刷新活动视角
            # Export to picture format
            png_file = os.path.join(output_path, '{0}.png'.format(bsm))
            arcpy.mapping.ExportToPNG(my_mxd, png_file, data_frame, df_export_width=500, df_export_height=300,
                                      resolution=96)
            arcpy.AddMessage("{0} has been saved,Time {1}s".format("{0}.png".format(bsm), time.time() - start_time))

        del my_mxd

    except arcpy.ExecuteError:
        print arcpy.GetMessages()
    except Exception as e:
        print e.message

其中方法解释:
replaceDataSource:方法用于更改图层的工作空间或源数据集。
ExportToPNG:以PNG形式要导出数据框。

运行结果

执行上述代码后,在指定输出位置生成图片:
在这里插入图片描述

其中思路有来自于参考文档:
1、Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置
2、ArcGIS批量导出图片
3、Arcpy操作


沾衣欲湿杏花雨,吹面不寒杨柳风。 --释志南《绝句》

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:26:21  更:2022-05-12 16:26:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:33:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码