生活随笔
收集整理的這篇文章主要介紹了
Arcpy操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Arcgis-Arcpy
持續更新
安裝
安裝步驟
基礎介紹
地理信息系統(geography information system,GIS)是在計算機硬件支持下,對整個或者部分地球表層空間中的有關地理分布數據進行采集,存儲,管路,運算,分析,顯示和描述的技術系統。地理信息系統處理和管理的對象是多種地理空間實體數據及其關系,包括空間定位數據,圖形數據,遙感圖像數據,屬性數據,主要用于分析和處理一定地理區域內分布的各種現象和過程,解決復雜的規劃,決策的管理問題。(有些官方,看看就行)
其他:略(嘿嘿嘿,可以去看看官方文檔,本文主要講數據變換,平時的基礎操作只能熟能生巧了)
數據變換:對數據進行放大,縮小等幾何位置,形狀和方位的改變等操作。
方法描述操作方法 空間校正 對于數據進行一些校正處理 編輯器|空間校正|設置校正數據|設置校正方法、空間校正 橡皮頁變換 對兩個圖層或多個圖層進行小型的幾何校正 編輯器|空間校正|設置校正數據|設置校正方法|橡皮頁變換 邊匹配 創建兩個相鄰圖層的位移連接 編輯器|空間校正|設置校正數據|設置校正方法|邊捕捉 地理配準 用于柵格數據的空間位置匹配 編輯器|地理配準 翻轉 將柵格數據通過數據中心點的水平軸線 數據管理工具|投影和變換|柵格|翻轉 鏡像 將柵格數據通過數據中心點的垂直軸線 數據管理工具|投影和變換|柵格|鏡像 重設比例尺 將柵格數據按照指定的比例分別沿X軸和Y軸放大或縮小 數據管理工具|投影和變換|柵格|重設比例 扭曲 將柵格數據通過輸入的控制點進行多項式變換 數據管理工具|投影和變換|柵格|扭曲
自學疑惑
為什么要進行地理配準
是為了使所有的圖像的坐標系統一樣,從而在一個坐標系統中更好的顯示數據。
為什么要建立拓撲關系
拓撲bai檢查主要是檢查數據的拓du撲關系是否正確且完整,如果通過檢查,說明數據有完整的拓撲關系,錯誤的拓撲關系不存在,比如重復線,相交線的交點是斷點等情況。
個人地理數據庫和文件地理數據庫的區別
文件bai地理數據庫是ESRI公司的數據庫,du存儲格式為包含二進制文件的文zhi件夾,存儲能力dao1TB,支持任何平臺個人地理數據庫存儲格式為Microsoft Access,存儲能力為2GB,只支持Windows平臺。
為什么要建立數據庫
數據組織是在數據采集之后的按照一定的方式和規則對數據進行歸并,存儲和處理的過程,數據處理的好壞,直接影響到GIS系統的性能。地理數據庫是按照層次型的數據對象來組織地理數據,這些數據對象包括對象類(表格),要素類(要素)和要素數據類。
數據的符號化和圖表化的方式顯示的區別和目的
符號化:直接在圖像上顯示;圖表化:單獨建立一個圖表;共同目的:讓數據看起來更清晰明了。
怎么從excel里面導入數據
從catalog中的excel里面選擇從XY表創建要素類。
柵格數據和矢量數據的區別
柵格數據可以是照片,用像元組成,要波段信息;矢量數據是點線面,打開會有屬性表。
為什么矢量分析和柵格分析可以分析三維空間信息,但是在實際中不能用于三維空間分析
矢量數據模型三維分析方法主要是基于數學分析和圖論的思想;柵格數據以矩陣計算為理論基礎進行分析。當前,GIS的研究成果和應用系統主要集中于描述二維空間信息,各項技術已較為成熟,但由于二維地理信息系統將實際的三維實體采用二維表示,具有很大的局限性,大量的多維空間信息無法得到利用,因此必須用三維。
為什么要建立和驗證拓撲關系
拓撲關系本身就是點線,點面,線線,線面,面面之間的關系,進行拓撲驗證可以更好的驗證他們之間的關系,從而更好的實施操作
拓撲錯誤類型以及好的解決方法
常見錯誤類型:面不能相互重疊,面不能有縫隙,線不能相交,線不能有懸掛,其他錯誤
推薦解決方法:
面不能相互重疊:在錯誤上右鍵選擇 merge,將重疊部分合并到其中一個面里;
面不能有縫隙:在錯誤上右鍵選擇 create feature,將縫隙部分生成一個新的要素,然后利用editor 下的 merge 把生成的面合并到相鄰的一個面里;
線不能相交:部分重疊可以在錯誤上右鍵選擇 subtract 去除重復部分;
線不能有懸掛:根據實際情況對線進行修改消除懸掛線;
其他錯誤:。
Arcgis和數據庫連接
Arcpy
基礎了解
判斷文件是否存在
>> > result
= arcpy
. Exists
( r
'E:\arcgis 光盤\Chp3\Ex1\Blocks.shp' )
>> > print ( result
)
判斷矢量數據要素數量
>> > arcpy
. GetCount_management
( r
'E:\arcgis 光盤\Chp3\Ex1\Blocks.shp' )
>> > < Result
'219' >
地圖文檔部分:即mxd
英語中文英語中文 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' )
>> > mxd
= mp
. MapDocument
( file )
API介紹
'''
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 修改相對路徑
保存地圖文檔
地圖文檔保存APIMapDocument.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
)
查看數據框的空間參考
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' )
mp
. ADDLayer
( mxd
. activeDataFrame
, layer
)
插入數據
layers
= mp
. ListLayers
( mxd
)
refLyr
= layers
[ 1 ] print ( refLyr
. name
) arcpy
. env
. workspace
= r
'工作路徑'
layer
= mp
. Layer
( '區界.shp' )
mp
. InsertLayer
( mxd
. activeDataFrame
, refLyr
, layer
, "位置(bottom)" )
保存圖層
layer
= mp
. ListLayers
( mxd
) [ 1 ]
lyr
= r
'路徑'
arcpy
. env
. overwriteOutput
= True
layer
. saveACopy
替換數據源
lyr
. replaceDtaSource
( '' , '' , '' )
文件制圖
英語中文英語中文 export 導出 print 打印 JPEG,Joint Photographic Experts Group 聯合圖像專家組 PDF,Portable Document Format 便攜式文檔格式 ExportToPDF 導出至pdf ExportToJPEG 導出至JPG
數據框導出為pdf文件
dfPDF
= r
'路徑'
mp
. ExportToPDF
( mxd
, dfPDF
, mxd
. activeDataFrame
)
數據框導出為jpeg文件
dfjpeg
= r
'路徑'
mp
. ExportToJPEG
( mxd
, dfjpeg
, mxd
. activeDataFrame
)
地圖文檔導出為圖片
dfjpeg
= r
'路徑'
mp
. ExportToJPEG
( mxd
, dfjpeg
)
單文件批量出圖
lyr
. definitionQuery
= '條件'
extent
= lyr
. getExtent
( )
adf
. extent
= extent
arcpy
. RefreshActiveView
( )
dfjpeg
= r
'路徑'
mp
. ExportToJPEG
( mxd
, dfjpeg
, mxd
. activeDataFrame
)
lyr
. definitionQuery
= ''
后續更新
總結
以上是生活随笔 為你收集整理的Arcpy操作 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。