Tôi muốn tìm hiểu xem một tệp hoặc cơ sở dữ liệu địa lý cá nhân là 9.3, 10.0, 10.1, v.v.
Có cách nào để làm điều này bằng Python không?
Tôi muốn tìm hiểu xem một tệp hoặc cơ sở dữ liệu địa lý cá nhân là 9.3, 10.0, 10.1, v.v.
Có cách nào để làm điều này bằng Python không?
Câu trả lời:
Tôi sẽ thử thuộc tính phát hành Describe Workspace
http://resource.arcgis.com/en/help/main/10.1/index.html#/Workspace_properies/018v0000002v000000/
3,0,0
.
Đây là một giải pháp ArcObjects + comtypes phù hợp với tôi ở 10.0:
import arcpy
from ESRICOMHelpers import GetESRIModule, CType, NewObj
def GetGDBReleaseVersion(gdbPath):
"""Gets the release version of the given geodatabase."""
esriGeoDatabase = GetESRIModule("esriGeoDatabase")
esriGeoprocessing = GetESRIModule("esriGeoprocessing")
gpUtilities = NewObj(esriGeoprocessing.GPUtilities, esriGeoprocessing.IGPUtilities)
try:
dataset = gpUtilities.OpenDatasetFromLocation(gdbPath)
workspace = CType(dataset, esriGeoDatabase.IWorkspace)
gdbRelease = CType(workspace, esriGeoDatabase.IGeodatabaseRelease2)
return "%d.%d" % (gdbRelease.MajorVersion + 7, gdbRelease.MinorVersion)
except:
return None
if __name__ == "__main__":
print GetGDBReleaseVersion(r"C:\GISData\test.gdb")
Đầu ra:
>>> 10,0
Lấy comtypes ở đây và ESRICOMHelpers ở đây. Nếu bạn ở mức 10.1, hãy chắc chắn điều chỉnh comtypes ' automation.py
như được mô tả trong câu trả lời này .
Lưu ý: Được cảnh báo rằng điều này cũng trả về 10.0 cho 10.1 cơ sở dữ liệu địa lý khi chạy từ ArcGIS 10.0! Chỉnh sửa: Trên thực tế, điều này trả về 10.0 cho cơ sở dữ liệu địa lý tệp 10.1 khi chạy từ ArcGIS 10.1! Không chắc chắn những gì đang xảy ra: |
release
lợi nhuận bất động sản tương tự cho cả hai 10.0 và 10.1 geodatabases phát hành cũng như: resources.arcgis.com/en/help/main/10.1/index.html#/...
Câu hỏi hay! Trong 10.0, tôi không thể tìm thấy bất kỳ phương thức Python nào để mô tả phiên bản của cơ sở dữ liệu địa lý. Tôi đã thử nghiệm bằng cách sử dụng công cụ Nâng cấp cơ sở dữ liệu địa lý trong 10.1 và nó có thể hữu ích.
"Công cụ Nâng cấp Cơ sở dữ liệu địa lý sẽ chỉ hoạt động đối với cơ sở dữ liệu địa lý được phát hành trước đó."
Điều này có nghĩa là chúng ta có thể kiểm tra việc chạy công cụ này mà không cần đặt tùy chọn "Nâng cấp cơ sở dữ liệu địa lý" chỉ để xem liệu nó có thực thi không (nếu cơ sở dữ liệu địa lý có cùng phiên bản mà nó sẽ không thực thi). Nếu nó sẽ - thì đó là phiên bản hiện tại (chỉ kiểm tra các điều kiện tiên quyết sẽ được thực hiện và cơ sở dữ liệu địa lý sẽ không bị ảnh hưởng).
Về thử nghiệm 9.3 và 10.1 - Tôi đã nghĩ đến việc thử tạo một tập dữ liệu mẫu có thể chỉ tạo trong cơ sở dữ liệu địa lý của phiên bản 10.0 / 10.1 và sau đó kiểm tra xem nó có được tạo không. Nếu không - thì đó là 9.3 / 10.1.
Không phải là giải pháp thanh lịch nhất mặc dù ...