昨天决定把之前申请的ArcGIS Pro试用弄一下,然后就开始研究了起来。

一开始,我以为ArcPy是Python写的,那么肯定就是开源的。而ArcPy加载的时候需要通过门户进行验证,那么查看验证部分的代码,就能轻松破解了。无论是直接修改验证返回结果、或者是自己建立山寨门户进行验证。

后来才发现我太天真了,Python的源码可以被编译成pyd文件,也就是经过CPython编译的C的二进制代码。网上查了一下,基本是无解了。

.Net平台和Java的代码都是比较好反编译的,然后看了下,它们与ArcPy完全不同,并不提供ArcGIS工具箱的调用。

之前也想到了HTTPS抓包的方法,但是盐值+数字签名就无解了…

所以自己还是太天真了,不是那么容易就能够破解的。

这么一想,ArcMap的破解工具,更加确定是官方放出来的了。

不过后来,在ArcGIS for Python的示例jupyter中,找到了账号密码,一登陆发现竟然还是管理员用户。然后给自己添加了Pro的权限和一些插件的权限,于是就可以用了。

这个是官方的一个小漏洞吧,忘记把notebook里面的账号密码删干净了。

今天又研究了一下企业版,也就是Enterprise,发现里面也分了好多东西。

其中,涉及到Pro验证的是Lisence Server;ArcMap等其他的对应的是ArcGIS Administrator。

就是,Lisence Server是专门给企业版提供Pro的授权的,需要购买配额什么的…

总之,作为一个商业软件,不仅授权逻辑比较复杂,破解也不是我这种非专业人士可以触及的。

今天呢,终于把之前路网计算时,占用内存的问题解决了,七搞八搞弄了半天,最后才发现是Geopandas的原因。它的几何字段占用内存太多了,而且速度慢。

于是,我直接读取了.dbf文件,处理除几何属性外的属性字段。也就是,对于OD矩阵,直接用dbf读取+pandas,不用geopandas。不过连接的房租,还是得用geopandas,然后输出shp。

后来又在谷歌上面查了一下,的确有几个情况一样的问题,但是都没有回答、或者没有解决。

github上也有issue,最近几个月提的,也没有解决。

issue里面也有懒加载的问题。

感觉Python GIS真的任重道远啊。我第一次用geopandas就出现这么个问题,之后都不太敢用了…

ArcPy和pandas比,还是pandas方便,不过如果对空间数据支持这么差的话…哎,总之最后终于解决了。

PDF的电子书也没看,太难了。

好像只喝过伊利、蒙牛的奶,没想到竟然是这个情况?

对了,ArcPy和ArcGIS for Python。

ArcPy是直接调用本地的分析工具;ArcGIS for Python是调用在线的分析工具;

因为看了ArcGIS for Python的源码,是根据http地址调用gp服务。而且,再怎么说,地图什么的加载的都是线上门户的,那么分析当然也是咯。

ArcPy里面只要涉及网络请求的,比如gp,还有涉及工具箱调用的,都被编译了,看不到,所以真的是我太天真了。