Anaconda下調用ArcGIS的arcpy工具包


之前安裝了Anaconda,有了python 的環境,看到大神分享了利用arcpy渲染DEM的效果圖,一時興起,馬上搞起來。

        一開始首先安裝了matplotlib和numpy,都是conda install直接安裝的,網絡好的情況下很快就安裝好了,然后將ArcGIS的目錄C:\Python27\ArcGIS10.1\Lib\site-packages\Desktop10.1.pth直接拷貝到Anaconda3的目錄里(C:\Users\xxx\Anaconda3\Lib\site-packages),利用import arcpy發現會報錯,提示找不到_base模塊,這可咋辦呢,經過一番查找,發現是可能是python的版本不對,我下的Anaconda當中默認的版本是python3, 而ArcGIS包需要的python版本是python 2.7。 幸好強大的Anaconda提供了多環境切換的功能,馬上用Navigator安裝了一個python 2.7的環境,安裝好之后安裝numpy, 再次嘗試用import arcpy,發現還是不行,提示某個DLL不是有效的win 32程序, 這次我注意到用Navigator配置環境的時候並沒有提供32bit還是64bit的選擇的地方,所以利用命令行重新新建了一個環境,新建環境之前set CONDA_FORCE_BIT32=1,這樣在配置環境和安裝軟件的包的時候就會默認32bit了,安裝完成之后記得改回來。這次配置完環境之后,安裝numpy、matplotlib和spyder,讀入數據,測試代碼,發現用6001×6001數據的時候會報內存錯誤的提示,而用1200×1200的時候就不會報這個錯誤提示。看網上的評論應該是32位的操作系統內存不足導致的,不過還是實現了調用的效果.

       通過這次見識到了python調用其他軟件包的強大功能,給自己打開了一扇大門。

附一些測試代碼和最后的效果:

import matplotlib.pyplot as plt

import arcpy

ras = ".\\test.tif"

hy = arcpy.RasterToNumPyArray(arcpy.Raster(ras))

 

ax = plt.figure(figsize=(9,9))

plt.imshow(hy, cmap = plt.cm.gist_earth)

 

arcpy.CheckOutExtension("Spatial")

# 太陽高度角

azimuth = 315.0

# 太陽方位角

altitude = 25.0

hs = arcpy.sa.Hillshade(ras,azimuth, altitude)

ax = plt.figure(figsize=(9,9))

plt.imshow(arcpy.RasterToNumPyArray(hs),cmap = plt.cm.gray)

 

ax = plt.figure(figsize=(12,12))

plt.imshow(arcpy.RasterToNumPyArray(hs),cmap = plt.cm.gray)

plt.imshow(hy,cmap = plt.cm.gist_earth, alpha=0.7)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM