• 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)

     

  • 相关阅读:
    模板——二分法
    Trie Tree(静态数组写法,好写)
    欧拉路径 基础题 hiho第49周
    Fleury算法求欧拉路径 hiho第50周
    hdu 5266 pog loves szh III 在线lca+线段树区间优化
    hdu 5269 字典树
    hdu 5265 pog loves szh II
    poj 3678 2-sat(强连通)
    lca 在线,离线 poj 1330
    lca 在线算法 zoj 3195
  • 原文地址:https://www.cnblogs.com/FYT302/p/8669630.html
Copyright © 2020-2023  润新知