持续更新
安装步骤
地理信息系统(geography information system,GIS)是在计算机硬件支持下,对整个或者部分地球表层空间中的有关地理分布数据进行采集,存储,管路,运算,分析,显示和描述的技术系统。地理信息系统处理和管理的对象是多种地理空间实体数据及其关系,包括空间定位数据,图形数据,遥感图像数据,属性数据,主要用于分析和处理一定地理区域内分布的各种现象和过程,解决复杂的规划,决策的管理问题。(有些官方,看看就行)
其他:略(嘿嘿嘿,可以去看看官方文档,本文主要讲数据变换,平时的基础操作只能熟能生巧了)
方法 | 描述 | 操作方法 |
---|---|---|
空间校正 | 对于数据进行一些校正处理 | 编辑器|空间校正|设置校正数据|设置校正方法、空间校正 |
橡皮页变换 | 对两个图层或多个图层进行小型的几何校正 | 编辑器|空间校正|设置校正数据|设置校正方法|橡皮页变换 |
边匹配 | 创建两个相邻图层的位移连接 | 编辑器|空间校正|设置校正数据|设置校正方法|边捕捉 |
地理配准 | 用于栅格数据的空间位置匹配 | 编辑器|地理配准 |
翻转 | 将栅格数据通过数据中心点的水平轴线 | 数据管理工具|投影和变换|栅格|翻转 |
镜像 | 将栅格数据通过数据中心点的垂直轴线 | 数据管理工具|投影和变换|栅格|镜像 |
重设比例尺 | 将栅格数据按照指定的比例分别沿X轴和Y轴放大或缩小 | 数据管理工具|投影和变换|栅格|重设比例 |
扭曲 | 将栅格数据通过输入的控制点进行多项式变换 | 数据管理工具|投影和变换|栅格|扭曲 |
是为了使所有的图像的坐标系统一样,从而在一个坐标系统中更好的显示数据。
拓扑bai检查主要是检查数据的拓du扑关系是否正确且完整,如果通过检查,说明数据有完整的拓扑关系,错误的拓扑关系不存在,比如重复线,相交线的交点是断点等情况。
文件bai地理数据库是ESRI公司的数据库,du存储格式为包含二进制文件的文zhi件夹,存储能力dao1TB,支持任何平台个人地理数据库存储格式为Microsoft Access,存储能力为2GB,只支持Windows平台。
数据组织是在数据采集之后的按照一定的方式和规则对数据进行归并,存储和处理的过程,数据处理的好坏,直接影响到GIS系统的性能。地理数据库是按照层次型的数据对象来组织地理数据,这些数据对象包括对象类(表格),要素类(要素)和要素数据类。
符号化:直接在图像上显示;图表化:单独建立一个图表;共同目的:让数据看起来更清晰明了。
从catalog中的excel里面选择从XY表创建要素类。
栅格数据可以是照片,用像元组成,要波段信息;矢量数据是点线面,打开会有属性表。
矢量数据模型三维分析方法主要是基于数学分析和图论的思想;栅格数据以矩阵计算为理论基础进行分析。当前,GIS的研究成果和应用系统主要集中于描述二维空间信息,各项技术已较为成熟,但由于二维地理信息系统将实际的三维实体采用二维表示,具有很大的局限性,大量的多维空间信息无法得到利用,因此必须用三维。
拓扑关系本身就是点线,点面,线线,线面,面面之间的关系,进行拓扑验证可以更好的验证他们之间的关系,从而更好的实施操作
常见错误类型:面不能相互重叠,面不能有缝隙,线不能相交,线不能有悬挂,其他错误
推荐解决方法:
面不能相互重叠:在错误上右键选择 merge,将重叠部分合并到其中一个面里;
面不能有缝隙:在错误上右键选择 create feature,将缝隙部分生成一个新的要素,然后利用editor 下的 merge 把生成的面合并到相邻的一个面里;
线不能相交:部分重叠可以在错误上右键选择 subtract 去除重复部分;
线不能有悬挂:根据实际情况对线进行修改消除悬挂线;
其他错误:。
>>> result = arcpy.Exists(r'E:\arcgis 光盘\Chp3\Ex1\Blocks.shp')
>>> print(result)
>>> arcpy.GetCount_management(r'E:\arcgis 光盘\Chp3\Ex1\Blocks.shp')
>>> <Result '219'>
英语 | 中文 | 英语 | 中文 |
---|---|---|---|
map | 地图 | author | 作者 |
mapping | 制图 | summary | 小结 |
document | 文档 | description | 描述 |
mapDocument | 地图文档 | default | 默认 |
properties | 属性 | relative | 相对 |
current | 当前 | path | 路径 |
title | 标题 | relativepaths | 相对路径 |
>>> import arcpy
>>> import arcpy.mapping as mp
>>> mxd = mp.MapDocument('current') # current表示是当前地图文档
>>> mxd = mp.MapDocument(file) # 查看其它地图文档
'''
dir(object):返回当前范围内的变量,方法和定义的类型列表
str.startswith(str, beg=0, end=len(string)):检查字符串是否以指定字符串开头
hasattr(object, name):判断对象是否包含对应的属性
getattr(object, name[,defalut]):返回一个对象属性值
'''
mxd.title = ur’’ | 修改标题 |
---|---|
mxd.author = ur’’ | 修改作者 |
mxd.credits = ur’’ | 修改单位 |
mxd.relativePaths = False | 修改相对路径 |
地图文档保存API | MapDocument.save() |
---|---|
地图文档另存为 | MapDocument.saveACopy(filename, {version}) |
换个文件名保存副本 | mxd.saveACopy(ur’’) |
# 修改文档示例
mxd.author = ur''
# 保存文档
mxd.saveACopy(ur'')
英语 | 中文 | 英语 | 中文 |
---|---|---|---|
data | 数据 | extent | 范围 |
frame | 框架 | zoomToSelectedFeatures | 缩放 |
dataFrame | 数据库 | selected | 选中 |
active | 活动的 | feature | 要素 |
activeDataFrame | 当前数据框 | zoomToSelectedFeatures | 缩放至选中要素 |
TOC table of contents | 内容列表 | spatialReference | 空间参考 |
refresh | 刷新 | layer | 图层 |
refreshTOC | 刷新内容列表 | geodatabase | 地理数据库 |
list | 列举 | referenceScale | 参考比例尺 |
General | 常规的 | rotation | 旋转角度 |
zoom | 缩放 | displayUnits | 显示单位 |
CGCS2000 | 中国2000坐标系 | mapUnits | 地图单位 |
>>> adf = mxd.activeDataFrame # 获得数据框
>>> print(adf.name) # 数据框名称
dfs = mp.ListDataFrames(mxd)
for df in dfs:
print(df.name)
callable(object) -> bool # 检查一个数据框是否可以调用
for i in dir(adf):
if not i.startswith("_") and callable(getattr(adf,i)):
print(i,getattr(adf,i))
adf.rotation # 数据框旋转角度
acrpy.RefreshActiveView # 刷新活动视角
time.sleep(secs) # 推迟调用线程的运行,运行secs参数,表示进程挂起的时间
adf = mxd.activeDataFrame
sr = adf.spatialReference # 空间参考
sr.name # 名称
u'CGCS2000_3_Degree_GK_Zone_36' # 高斯投影
ext = adf.extent # 数据框范围
ext.XMin
ext.XMax
ext.YMin
ext.YMax
'''
1. 主要任务
将选中要素最大化显示出来
2. 准备工作
用鼠标移动地图,并用鼠标选择钦南区
'''
adf.zoomToSelectedFeatures() # 缩放至选中要素
arcpy.RefreshActiveView() # 刷新活动视角
import numpy as np
ext = adf.extent
xs = np.linespace(ext.XMin,ext.XMax,50)
ys = np.linespace(ext.YMin,ext.YMax,50)
xys = zip(xs,ys)
for xy in xys:
x=xy[0]
y=xy[1]
extent = arcpy.Extent(x,y,x,y)
adf.panToExtent(extent)
arcpy.RefreshActiveView()
time.sleep()
英语 | 中文 | 英语 | 中文 |
---|---|---|---|
Layer | 图层 | transparency | 透明度 |
len,length | 长度 | source | 来源 |
visiable | 可见性 | extent | 范围 |
description | 描述 | FeatureLayer | 要素图层 |
definition | 定义 | SelectionSet | 选择集 |
query | 查询 | symbology | 符号 |
scale | 比例尺 | label | 标注 |
min,minimum | 最小 | field | 字段 |
max,maximum | 最大 | contain | 包含 |
FID,FeatureID | 要素编号 | definitionQuery | 定义查询 |
lys = mp.ListLayers(mxd) # 获得所有图层
for each in lys:
print(each.name,)
lys = mp.ListLayers(mxd, data_frame=adf) # 获得所有图层
for each in lys:
print(each.name,)
lys = mp.ListLayers(mxd, 'mohu*') # 获得所有图层
ly = lys[0]
print(ly)
lys = mp.ListLayers(mxd, data_frame=adf) # 获得所有图层
ly = lys[0]
for i in dir(ly):
if hasattr(ly,i) and not i.startswith("_"):
print(i,getattr(ly,i))
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
ext = ly.Extent()
print(ext.XMin,ext.XMax,ext.YMin,ext.YMax)
# 验证中心点在图层之内
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
ext = ly.Extent()
x0 = (ext.XMin + ext.XMax)/2
y0 = (ext.YMin + ext.YMax)/2
p0 = arcpy.Point(x0,y0)
ext.contain(p0)
# 测试随机点和图层的关系
adf = mxd.activeDataFrame # 获得数据框
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
extent = ly.Extent()
adf.panToExtent(extent) # 平移
arcpy.RefreshActiveView()
adf.extent = extent # 缩放
adf = mxd.activeDataFrame # 获得数据框
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
adf.extent = ly.getSelectedExtent() # 图层的选择范围
adf.panToExtent(extent) # 平移
arcpy.RefreshActiveView()
adf.extent = extent # 缩放
arcpy.RefreshActiveView()
adf = mxd.activeDataFrame # 获得数据框
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
adf.extent = ly.getSelectionSet()
lys = mp.ListLayers(mxd) # 获得所有图层
ly = lys[0]
qujie.definitionQuery # 获取定义查询
qujie.definitionQuery = '查询条件' # 设置定义查询
arcpy.RefreshActiveView()
qujie.definitionQuery = '' # 清除定义查询
arcpy.RefreshActiveView()
英语 | 中文 | 英语 | 中文 |
---|---|---|---|
DataSource | 数据源 | env | 环境 |
DataLink | 数据链接 | replace | 替换 |
Workspace | 工作空间 | overwrite | 覆盖 |
lyr.isFeatureLayer # 是否要素图层
print(lyr.dataSource) # 数据源,返回路径
print(lyr.datasetName) # 数据集名称
# 工作空间
import os
print(os.path.split(lyr.dataSource)[0])
print(lyr.workaspacePath)
# 数据名
print(os.path.split(lyr.dataSource)[1])
# 文件命名
print(lyr.datasetName)
# 文件类型
print(os.path.splitext(lyr.dataSource))
arcpy.env.workspace = r'工作路径' # 工作空间
layer = mp.Layer('区界.shp') # shp生成layer
mp.ADDLayer(mxd.activeDataFrame,layer) # 添加图层
layers = mp.ListLayers(mxd)
refLyr = layers[1]
print(refLyr.name) # 参考图层名称
arcpy.env.workspace = r'工作路径' # 工作空间
layer = mp.Layer('区界.shp') # shp生成layer
mp.InsertLayer(mxd.activeDataFrame,refLyr,layer,"位置(bottom)") # 添加图层
layer = mp.ListLayers(mxd)[1] # 定位图层
lyr = r'路径' # 添加图层
arcpy.env.overwriteOutput = True # 覆盖输出
layer.saveACopy # 保存图层
lyr.replaceDtaSource('','','')
英语 | 中文 | 英语 | 中文 |
---|---|---|---|
export | 导出 | 打印 | |
JPEG,Joint Photographic Experts Group | 联合图像专家组 | PDF,Portable Document Format | 便携式文档格式 |
ExportToPDF | 导出至pdf | ExportToJPEG | 导出至JPG |
dfPDF = r'路径' # 目标jpg路径
mp.ExportToPDF(mxd,dfPDF,mxd.activeDataFrame) # 导出图片
dfjpeg = r'路径' # 目标jpg路径
mp.ExportToJPEG(mxd,dfjpeg,mxd.activeDataFrame) # 导出图片
dfjpeg = r'路径' # 目标jpg路径
mp.ExportToJPEG(mxd,dfjpeg) # 导出图片
lyr.definitionQuery = '条件' # 图层过滤
extent = lyr.getExtent() # 获取图层范围
adf.extent = extent # 设置数据框范围
arcpy.RefreshActiveView()
dfjpeg = r'路径' # 目标jpg路径
mp.ExportToJPEG(mxd,dfjpeg,mxd.activeDataFrame) # 导出图片
lyr.definitionQuery='' # 消除过滤
后续更新