第九章 ArcPy數(shù)據(jù)訪問模塊 ||| 第十一章 使用加載項自定義ArcGIS界面
我們將在本章介紹以下幾個案例:
- 獲取工作空間內(nèi)的要素類列表
- 使用通配符限制返回的要素類列表
- 使用要素類型限制返回的要素類列表
- 獲取要素類或表中的字段列表
- 調(diào)用Describe()函數(shù)返回要素類的描述信息
- 調(diào)用Describe()函數(shù)返回柵格數(shù)據(jù)的描述信息
- 調(diào)用Describe()函數(shù)返回工作空間信息
引言
Python腳本提供了執(zhí)行批處理操作的功能。這將幫助你完成自動化工作流程并提高數(shù)據(jù)處理效率。舉個例子,你可能需要遍歷磁盤上所有的數(shù)據(jù)集并對每一個數(shù)據(jù)集執(zhí)行某項特定操作。編寫地理處理任務的主體部分之前搂鲫,你第一步通常是完成初步的數(shù)據(jù)收集瞬雹。這一初步的數(shù)據(jù)收集工作通常調(diào)用ArcPy中的一個或多個列表函數(shù)來實現(xiàn)粗蔚。這些列表函數(shù)返回Python列表對象靡菇。這些列表對象可通過遍歷操作以進行后續(xù)處理。ArcPy提供了大量可用于返回數(shù)據(jù)列表的函數(shù)国夜。這些函數(shù)可以處理許多不同類型的GIS數(shù)據(jù)减噪。本章中,我們將了解ArcPy中許多用于創(chuàng)建數(shù)據(jù)列表的函數(shù)支竹。在第三章管理地圖文檔和圖層中旋廷,我們也介紹了一些列表函數(shù)。不過礼搁,這些列表函數(shù)與arcpy.mapping
模塊相關饶碘,且專門用于處理地圖文檔和圖層。我們在本章中介紹的列表函數(shù)直接位于arcpy
站點包中馒吴,并且更為通用扎运。
我們還會介紹Describe()
函數(shù),該函數(shù)返回一個包含屬性組的動態(tài)對象饮戳。這些動態(tài)生成的Describe
對象中包含的屬性組內(nèi)容取決于所要描述的數(shù)據(jù)類型豪治。當我們對一個要素類調(diào)用Describe()
函數(shù),則返回要素類特定屬性扯罐。另外负拟,不論什么數(shù)據(jù)類型的數(shù)據(jù)都會獲取一組通用Describe
對象屬性。
獲取工作空間內(nèi)的要素類列表
同我們將在本章中介紹的其他列表函數(shù)一樣歹河,獲取工作空間內(nèi)的要素類列表通常是腳本中執(zhí)行多步驟處理流程的第一步掩浙。舉個例子,你可能想要對某個文件地理數(shù)據(jù)庫內(nèi)的所有要素類添加一個新的字段秸歧。那么你就首先需要獲取該工作空間內(nèi)所有要素類的數(shù)據(jù)列表厨姚。
Getting ready
ArcPy提供的列表函數(shù)可獲取字段列表,索引列表键菱,數(shù)據(jù)集列表谬墙,要素類列表,文件列表经备,柵格數(shù)據(jù)列表拭抬,表列表等。ListFeatureClasses()
函數(shù)可用于創(chuàng)建工作空間內(nèi)的所有要素類列表侵蒙。該函數(shù)接受三個可選參數(shù)用于限制返回的列表內(nèi)容造虎。其中第一個通配符參數(shù)根據(jù)要素類名稱來限制返回的要素類。第二個類型參數(shù)根據(jù)數(shù)據(jù)類型(點蘑志,線,面等)來限制返回的要素類。第三個數(shù)據(jù)集參數(shù)根據(jù)要素數(shù)據(jù)集來限制返回的要素類急但。在本案例中澎媒,我們會返回工作空間內(nèi)所有的要素類。
How to do it...
按照以下步驟來學習如何調(diào)用ListFeatureClasses()
函數(shù)來獲取工作空間內(nèi)的要素類列表:
1.打開IDLE波桩,打開一個新的腳本窗口戒努。
2.腳本保存為C:\ArcpyBook\Ch10\ListFeatureClasses.py
文件。
3.導入arcpy
模塊:
import arcpy
4.設置工作空間路徑:
arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"
必須牢記一點镐躲,你在調(diào)用列表函數(shù)前需先設置工作空間路徑储玫。否則的話,列表函數(shù)就不知道要提取哪個數(shù)據(jù)集的數(shù)據(jù)列表萤皂。
5.調(diào)用ListFeatureClasses()
函數(shù)并將返回結果賦值給變量fcList
:
fcList = arcpy.ListFeatureClasses()
6.循環(huán)遍歷fcList
中每個要素類并打印到屏幕上:
for fc in fcList:
print fc
7.保存并運行腳本撒穷。你會看到如下結果:
Crimes2009
CityBoundaries
CrimesBySchoolDistrict
SchoolDistricts
BexarCountyBoundaries
Texas_Counties_LowRes
Burglary
How it works...
調(diào)用列表函數(shù)之前,你首先需要設置工作空間環(huán)境參數(shù)以確定當前工作空間路徑裆熙。ListFeatureClasses()
函數(shù)接受三個可選參數(shù)來限制返回的要素類端礼。其他大部分的列表函數(shù)的工作方式基本如此。不過在本案例中入录,我們調(diào)用ListFeatureClasses()
函數(shù)時并沒有傳遞任何參數(shù)蛤奥。這樣處理的結果就是返回的Python列表對象中包含了當前工作空間內(nèi)的所有的要素類,之后通過for
循環(huán)迭代列表中的內(nèi)容僚稿。列表中的每一個要素類都是包含要素類名稱的字符串來表示凡桥。
There's more...
除了返回工作空間內(nèi)的要素類列表,你還可能需要獲取表列表蚀同。ListTables()
函數(shù)返回工作空間內(nèi)的獨立表數(shù)據(jù)列表缅刽。列表內(nèi)容可通過表名稱或表類型來篩選。表類型參數(shù)包括dBase
唤崭,INFO
和ALL
拷恨。列表中的所有的值都是包含表名稱的字符串數(shù)據(jù)類型。
使用通配符限制返回的要素類列表
默認情況下谢肾,ListFeatureClasses()
函數(shù)會返回工作空間內(nèi)所有的要素類腕侄。你可能想通過某種方式來限制返回的列表內(nèi)容。ListFeatureClasses()
函數(shù)接受三個可選參數(shù)來限制返回的要素類芦疏。所有的參數(shù)都是可選的冕杠。第一個參數(shù)是通配符參數(shù),該參數(shù)基于字符的組合來限制返回的列表內(nèi)容酸茴。其他的參數(shù)分別根據(jù)數(shù)據(jù)類型和要素集來限制返回的內(nèi)容分预。
Getting ready
ListFeatureClasses()
函數(shù)使用通配符作為第一個參數(shù)來限制返回的要素類列表。通配符是根據(jù)名稱來限制列表內(nèi)容薪捍。比如笼痹,你可能想只返回名稱以B
開頭的要素類列表配喳。你就可以結合使用字母B
與星號(*
)來實現(xiàn)。下面的代碼示例展示了使用通配符來限制列表內(nèi)容:
fcs = arcpy.ListFeatureClasses("B*")
在本案例中凳干,你將學習如何通過使用通配符來限制返回的要素類列表:
How to do it...
按照以下步驟來學習如何在ListFeatureClasses()
函數(shù)中使用通配符參數(shù)來限制返回的要素類列表:
1.打開IDLE晴裹,加載C:\ArcpyBook\Ch10\ListFeatureClasses.py
腳本。
2.在列表函數(shù)中添加通配符參數(shù)來僅返回名稱以字母C
開始的要素類列表救赐。
fcs = arcpy.ListFeatureClasses("C*")
3.保存并運行腳本涧团。你會看到如下結果顯示:
Crimes2009
CityBoundaries
CrimesBySchoolDistrict
How it works...
ListFeatureClasses()
函數(shù)接受三個可選參數(shù),其中通配符參數(shù)基于名稱來限制返回的要素類列表经磅。在本案例中泌绣,我們使用了通配符(*
)來限制返回的列表中僅包含名稱以C
開頭的要素類
使用要素類型限制返回的要素類列表
ListFeatureClasses()
函數(shù)除了使用通配符來限制返回的要素類,你還可以通過要素類型來篩選返回的內(nèi)容预厌。
Getting ready
除了使用通配符來限制ListFeatureClasses()
函數(shù)返回的列表內(nèi)容阿迈,要素類型限制條件也可以與通配符一起使用或單獨使用來限制列表內(nèi)容。舉個例子配乓,下面的示例代碼展示了使用兩個限制條件來限制返回的列表中僅包含以字母B
開頭的面要素類仿滔。在本案例中,你將使用要素類型參數(shù)以及通配符參數(shù)一起來限制返回的要素類:
fcs = arcpy.ListFeatureClasses("B*","Polygon")
How to do it...
按照以下步驟來學習如何在ListFeatureClasses()
函數(shù)中使用要素類型來限制返回的要素類列表:
1.打開IDLE犹芹,加載C:\ArcpyBook\Ch10\ListFeatureClasses.py
腳本崎页。
2.在列表函數(shù)中添加要素類參數(shù)來僅返回名稱以字母C
開始的面要素類列表。
fcs = arcpy.ListFeature("C*","Polygon")
3.保存并運行腳本腰埂。你會看到如下結果顯示:
CityBoundaries
CrimesBySchoolDistrict
How it works...
ListFeatureClasses()
函數(shù)中的第二個可選參數(shù)根據(jù)要素類型來限制返回的結果飒焦。在本案例中,我們限制僅返回面要素屿笼。其他的要素類型包括點(Point)牺荠,線(Polyline),區(qū)域(Region)等驴一。
There's more...
ListFeatureClasses()
函數(shù)中的第三個可選參數(shù)是要素集名稱休雌。該參數(shù)篩選出位于特定要素集內(nèi)的要素類。當該參數(shù)沒有在調(diào)用ListFeatureClasses()
函數(shù)中指定肝断,則返回當前工作空間內(nèi)的獨立要素類杈曲。
獲取要素類或表中的字段列表
要素類和表中會包含有至少一列的屬性信息。你可以調(diào)用ListFields()
函數(shù)返回要素類中的字段列表胸懈。
Getting ready
ListFields()
函數(shù)返回的列表中包含了要素類或表中每個字段對應的一個Field
對象担扑。像ListFields()
和ListIndexes()
的函數(shù)會要求一個輸入數(shù)據(jù)集作為執(zhí)行對象。你可以使用通配符或字段類型來限制返回的字段趣钱。每一個Field
對象包含了多個只讀屬性涌献,包括名稱(Name),別名(AliasName)首有,類型(Type)燕垃,長度(Length)等枢劝。
How to do it...
按照以下步驟來學習如何返回一個要素類中的字段列表:
1.打開IDLE,創(chuàng)建一個新的腳本窗口卜壕。
2.腳本保存為C:\ArcpyBook\Ch10\ListOfFields.py
文件呈野。
3.導入arcpy
模塊。
import arcpy
4.設置工作空間路徑:
arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"
5.在try
語句塊中對Burglary
要素類調(diào)用ListFields()
函數(shù):
try:
fieldList = arcpy.ListFields("Burglary")
6.循環(huán)遍歷字段列表中的每一個字段印叁,并打印字段名稱,類型以及長度军掂。確保代碼縮進:
for fld in fieldList:
print "%s is a type of %s with a length of %i" % (fld.name,fld.type,fld.length)
7.添加except
語句:
except Exception as e:
print e.message
8.完整代碼如下:
import arcpy
arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"
try:
fieldList = arcpy.ListFields("Burglary")
for fld in fieldList:
print "%s is a type of %s with a length of %i" %(fld.name,fld.type,fld.length)
except Exception as e:
print e.message
9.保存并運行腳本轮蜕。你會看到如下結果顯示:
OBJECTID is a type of OID with a length of 4
Shape is a type of Geometry with a length of 0
CASE is a type of String with a length of 11
LOCATION is a type of String with a length of 40
DIST is a type of String with a length of 6
SVCAREA is a type of String with a length of 7
SPLITDT is a type of Date with a length of 8
SPLITTM is a type of Date with a length of 8
HR is a type of String with a length of 3
DOW is a type of String with a length of 3
SHIFT is a type of String with a length of 1
OFFCODE is a type of String with a length of 10
OFFDESC is a type of String with a length of 50
ARCCODE is a type of String with a length of 10
ARCCODE2 is a type of String with a length of 10
ARCTYPE is a type of String with a length of 10
XNAD83 is a type of Double with a length of 8
YNAD83 is a type of Double with a length of 8
How it works...
ListFields()
函數(shù)返回要素類或表中的字段列表。該函數(shù)接受一個必選參數(shù)蝗锥,即要執(zhí)行操作的要素類或表的引用地址跃洛。你可以使用通配符或字段類型來限制返回的字段。在本案例中终议,我們僅指定了一個要素類參數(shù)汇竭,這樣就意味著將會返回所有字段。對于返回的每一個字段穴张,我們輸出查看其名稱细燎,字段類型和字段長度。正如之前在討論ListFeatureClasses()
所提到的皂甘,ListFields()
函數(shù)和其他列表函數(shù)通常是腳本中執(zhí)行多步處理的第一步玻驻。舉個例子,你可能想要更新一個人口統(tǒng)計區(qū)要素類中的人口信息字段中的統(tǒng)計數(shù)據(jù)偿枕。要完成這一工作璧瞬,你需要獲取要素類中包含所有字段的列表,然后循環(huán)遍歷該列表來查找包含人口信息的特定字段名稱渐夸,最后更新每一行的人口信息嗤锉。ListFields()
函數(shù)還接受一個通配符參數(shù)。如果你事先明確了所需字段名稱墓塌,將其傳遞給通配符參數(shù)瘟忱,這樣就只會返回指定字段。
調(diào)用Describe()函數(shù)返回要素類的描述信息
數(shù)據(jù)集包含的信息本質(zhì)上都是描述性的桃纯。比如乖仇,要素類包含名稱迹蛤,幾何類型,空間參考等。當你在腳本中執(zhí)行下一步處理前需要查看特定信息的時候械筛,這些描述性信息就很有價值了。比如你可能想只對線狀要素而不是點或面要素執(zhí)行一個緩沖區(qū)操作。你可以調(diào)用Describe()
函數(shù)來獲取數(shù)據(jù)集基本的描述性信息。你可以將這些信息看作元數(shù)據(jù)帚屉。
Getting ready
Describe()
函數(shù)提供了獲取數(shù)據(jù)集基本信息的功能。這些數(shù)據(jù)集包括要素類漾峡,表攻旦,ArcInfo coverage,圖層文件生逸,工作空間牢屋,柵格及其他數(shù)據(jù)集。該函數(shù)返回了一個包含描述數(shù)據(jù)類型特定屬性的Describe
對象槽袄。Describe
對象中的屬性是以屬性組的方式進行組織烙无,并且返回的數(shù)據(jù)集屬性信息至少歸入一個屬性組。
舉個例子遍尺,對一個地理空間數(shù)據(jù)庫調(diào)用Describe()
函數(shù)將會返回GDB要素類截酷,要素類,表以及數(shù)據(jù)集屬性組乾戏。每一個屬性組中包含可被訪問的特定屬性迂苛。
Describe()
函數(shù)接受一個字符串參數(shù)用來指向數(shù)據(jù)源。下面的代碼示例中鼓择,我們傳遞了一個包含在地理空間數(shù)據(jù)庫中要素類的引用參數(shù)三幻。該函數(shù)會返回一個包含了一組動態(tài)屬性的Describe
對象,其中這些動態(tài)屬性的集合稱為屬性組:
arcpy.env.workspace = "c:/ArcpyBook/data/CityOfSanAntonio.gdb"
desc = arcpy.Describe("SchoolDistricts")
print "The feature type is: " + desc.featureType
The feature type is: Simple
print "The shape type is: " + desc.shapeType
The shape type is: Polygon
print "The name is: " + desc.name
The name is: SchoolDistricts
print "The path to the data is: " + desc.path
The path to the data is: c:/ArcpyBook/data/CityOfSanAntonio.gdb
不論什么數(shù)據(jù)類型呐能,所有的數(shù)據(jù)集都會包含一組默認的屬性集合包含在Describe
對象中赌髓。這些屬性都是只讀的。其中一些常用的屬性包括數(shù)據(jù)類型(dataType
)催跪,目錄(catalogPath
)锁蠕,名稱(name
),路徑(path
)以及文件(file
)懊蒸。
在本案例中荣倾,你將編寫一個腳本調(diào)用Describe()
函數(shù)來獲取一個要素類中的描述性信息。
How to do it...
按照以下步驟來學習如何獲取要素類的描述性信息:
1.打開IDLE骑丸,打開一個新的腳本窗口舌仍。
2.腳本保存為C:\ArcpyBook\Ch10\DescribeFeatureClass.py
文件。
3.導入arcpy
模塊通危。
import arcpy
4.設置工作空間路徑:
arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"
5.添加try
語句塊:
try:
6.對Burglary
要素類調(diào)用Describe()
函數(shù)并打印幾何類型:
dsscFC = arcpy.Describe("Burglary")
print "The shape type is: " + descFC.shapeType
7.獲取要素類的字段列表并打印字段的名稱铸豁,類別以及長度:
flds = descFC.fields
for fld in flds:
print "Field: " + fld.name
print "Type: " + fld.type
print "Length: " + str(fld.length)
8.獲取要素類的四至范圍并打印其坐標:
ext = descFC.extent
print "XMin: %f" % (ext.XMin)
print "YMin: %f" % (ext.YMin)
print "XMax: %f" % (ext.XMax)
print "YMax: %f" % (ext.YMax)
9.添加except
語句塊:
except Exception as e:
print e.message()
10.完整代碼如下:
import arcpy
arcpy.env.workspace = "C:/ArcpyBook/data/CityOfSanAntonio.gdb"
try:
descFC = arcpy.Describe("Burglary")
print "The shape type is: " + descFC.shapeType
flds = descFC.fields
for fld in flds:
print "Field: " + fld.name
print "Type: " + fld.type
print "Length: " + str(fld.length)
ext = descFC.extent
print "XMin: %f" % (ext.XMin)
print "YMin: %f" % (ext.YMin)
print "XMax: %f" % (ext.XMax)
print "YMax: %f" % (ext.YMax)
except Exception as e:
print e.message
11.保存并運行腳本。你會看到如下結果顯示:
The shape type is: Point
Field: OBJECTID
Type: OID
Length: 4
Field: Shape
Type: Geometry
Length: 0
Field: CASE
Type: String
Length: 11
Field: LOCATION
Type: String
Length: 40
.....
.....
XMin: -103.518030
YMin: -6.145758
XMax: -98.243208
YMax: 29.676404
How it works...
我們在腳本中對要素類調(diào)用Describe()
函數(shù)并返回一個要素類屬性組以及表屬性組和數(shù)據(jù)集屬性組菊碟。除了可以訪問要素類屬性組节芥,你還可以訪問表屬性組。
表屬性組是非常重要的,通過表屬性組你可以訪問獨立表或要素類中的字段头镊。你還可以通過屬性組來訪問表或要素類中的索引蚣驼。表屬性組中的fields
屬性返回一個包含要素類每個字段對應的一個Field
對象的列表。每一個字段都包含一組只讀屬性相艇,包括名稱颖杏,別名,長度坛芽,類型留储,比例,精度等等咙轩。其中最為有用的屬性是名稱和類型欲鹏。在本案例中,我們打印了字段名稱臭墨,類型和長度。
最后膘盖,我們通過調(diào)用數(shù)據(jù)集屬性組中的extent
屬性返回Extent
對象來輸出圖層的地理范圍胧弛。數(shù)據(jù)集屬性組中包含了許多有用的屬性。其中最為常用的屬性包括extent
和spatialReference
侠畔,許多地理處理工具和腳本在執(zhí)行過程中可能需要這些信息结缚。你還可以獲取datasetType
屬性和版本化信息等其他屬性。
調(diào)用Describe()函數(shù)返回柵格數(shù)據(jù)的描述信息
柵格文件同樣包含描述性信息软棺,而這些信息也可以通過調(diào)用Describe()
函數(shù)獲取红竭。
Getting ready
柵格數(shù)據(jù)集同樣可以調(diào)用Describe()
函數(shù)來獲取其描述信息。本案例中喘落,你將通過返回的地理范圍和空間參考信息來描述一個柵格數(shù)據(jù)集茵宪。Describe
對象除了包含一個通用的數(shù)據(jù)集屬性組之外,還包含了數(shù)據(jù)集的SpatialReference
對象瘦棋。該對象可用于獲取數(shù)據(jù)集詳細的空間參考信息稀火。
How to do it...
按照以下步驟來學習如何獲取一個柵格影像文件的描述信息:
1.打開IDLE,打開一個新的腳本窗口赌朋。
2.腳本保存為C:\ArcpyBook\Ch10\DescribeRaster.py
文件凰狞。
3.導入arcpy
模塊。
import arcpy
4.設置工作空間路徑:
arcpy.env.workspace = "C:/ArcpyBook/data"
5.添加try
語句塊:
try:
6.對柵格數(shù)據(jù)集調(diào)用Describe()
函數(shù)沛慢,確保代碼縮進以位于try
語句塊內(nèi):
descRaster = arcpy.Describe("AUSTIN_EAST_NW.sid")
7.獲取柵格數(shù)據(jù)集的四至范圍并打印坐標:
ext = descRaster.extent
print "XMin: %f" % (ext.XMin)
print "YMin: %f" % (ext.YMin)
print "XMax: %f" % (ext.XMax)
print "YMax: %f" % (ext.YMax)
8.獲取SpatialReference
對象并打印名稱和類別:
sr = descRaster.spaitalReference
print sr.name
print sr.type
9.添加except
語句塊:
except Exception as e:
print e.message
10.完整代碼如下:
import arcpy
arcpy.env.workspace = "C:/ArcpyBook/data"
try:
descFC = arcpy.Describe("AUSTIN_EAST_NW.sid")
ext = descRaster.extent
print "XMin: %f" % (ext.XMin)
print "YMin: %f" % (ext.YMin)
print "XMax: %f" % (ext.XMax)
print "YMax: %f" % (ext.YMax)
sr = descRaster.spaitalReference
print sr.name
print sr.type
except Exception as e:
print e.message
11.保存并運行腳本赡若。你會看到如下結果顯示:
XMin: 3111134.862457
YMin: 10086853.262238
XMax: 3131385.723907
YMax: 10110047.019228
NAD83_Texas_Central
Projected
How it works...
本案例與上一個案例非常相似。兩個案例的區(qū)別在于本案例對柵格數(shù)據(jù)集而不是矢量要素類調(diào)用Describe()
函數(shù)团甲。在兩個案例中逾冬,我們都調(diào)用了extent
屬性返回了數(shù)據(jù)集的地理四至范圍。在本案例中我們還獲取了柵格數(shù)據(jù)集的SpatialReference
對象并輸出查看了該對象的名稱和類型躺苦。
調(diào)用Describe()
函數(shù)返回工作空間信息
ArcGIS中可以使用許多不同類型的地理數(shù)據(jù)庫粉渠,包括個人地理數(shù)據(jù)庫分冈,文件地理數(shù)據(jù)庫以及企業(yè)地理數(shù)據(jù)庫。如我們在第八章數(shù)據(jù)查詢和選擇中所了解到的霸株,構建查詢條件語句會依賴于數(shù)據(jù)集所在的地理數(shù)據(jù)庫的類型的不同而有所差別雕沉。腳本在執(zhí)行前可能并不了解地理數(shù)據(jù)庫的類型。為了能夠提高腳本在查詢過程中的健壯性去件,你可以對工作空間對象調(diào)用Describe()
函數(shù)以獲取相關信息來構建相對應的查詢語句坡椒。
Getting ready
工作空間(workspace)屬性組提供了與工作空間有關的信息(比如工作空間類型是文件夾,還是個人地理數(shù)據(jù)庫尤溜,文件地理數(shù)據(jù)庫或企業(yè)地理數(shù)據(jù)庫)倔叼。通過工作空間屬性組能夠獲取的信息包括當工作空間是一個ArcSDE時的連接信息,與地理數(shù)據(jù)庫有關的域以及工作空間類型信息宫莱,其中工作空間類型可以是文件系統(tǒng)(FileSystem
)丈攒,本地數(shù)據(jù)庫(LocalDatabase
)或遠程數(shù)據(jù)庫(RemoteDatabase
)。本地數(shù)據(jù)庫(LocalDatabase
)是指個人或文件地理數(shù)據(jù)庫授霸,而遠程數(shù)據(jù)庫(RemoteDatabase
)則是指ArcSDE地理數(shù)據(jù)庫巡验。在本案例中,你將利用工作空間屬性組來獲取一個文件地理數(shù)據(jù)庫的相關信息碘耳。
How to do it...
1.打開IDLE显设,打開一個新的腳本窗口。
2.腳本保存為C:\ArcpyBook\Ch10\DescribeWorkspace.py
文件辛辨。
3.導入arcpy
模塊捕捂。
import arcpy
4.開始try
語句塊:
try:
5.對CityOfSanAntonio
地理數(shù)據(jù)庫調(diào)用Describe()
函數(shù),確保代碼縮進以位于try
語句塊內(nèi)斗搞,下面的兩行print
語句也需要位于try
語句塊中:
descWorkspace = arcpy.Describe("C:/ArcpyBook/data/CityOfSanAntonio.gdb")
6.打印工作空間類型:
print descWorkspace.workspaceType
7.打印工作空間細節(jié)信息:
print descWorkspace.workspaceFactoryProgID
8.添加except
語句塊:
except Exception as e:
print e.message
9.保存并運行腳本指攒。你會看到如下結果顯示:
LocalDatabase
esriDataSourcesGDB.FileGDBWorkspaceFactory.1
How it works...
workspaceType
屬性會返回FileSystem
,LocalDatabase
和RemoteDatabase
中一個值僻焚。LocalDatabase
值說明你當前處理的是一個個人或文件地理數(shù)據(jù)庫幽七。然而,這樣的信息還不夠具體溅呢。為了能夠獲取更為具體的信息澡屡,你可以訪問workspaceFactoryProgID
屬性,該屬性會指明地理數(shù)據(jù)庫的具體類型咐旧。在本案例中是一個文件地理數(shù)據(jù)庫驶鹉。