• Anaconda下调用ArcGIS的arcpy工具包


    之前安装了Anaconda,有了python 的环境,看到大神分享了利用arcpy渲染DEM的效果图,一时兴起,马上搞起来。

            一开始首先安装了matplotlib和numpy,都是conda install直接安装的,网络好的情况下很快就安装好了,然后将ArcGIS的目录C:Python27ArcGIS10.1Libsite-packagesDesktop10.1.pth直接拷贝到Anaconda3的目录里(C:UsersxxxAnaconda3Libsite-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)

     

  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/FYT302/p/8669630.html
Copyright © 2020-2023  润新知