机器学习服务中的ArcGIS Python脚本

时间:2018-10-09 15:22:24

标签: python-3.x python-2.7 machine-learning arcgis sql-server-2017

我正在为即将进行的项目进行一些研发,希望我可以启动并运行此POC。我在网上没有看到太多关于自己在做什么的信息,所以希望我只是在做一些新的事情,而不是不可能的事情。

任务:

  • 我们从大约250个来源中接收ArcGIS地理空间数据-一些是shapefile,一些是AutoCAD,其他是文件地理数据库。当前解决方案包括针对每个源的Arc模型,该模型对数据进行规范化以进行进一步的ETL处理-当前具有shapefile输出。这些模型可在ArcGIS 10.6之前的版本中运行,该版本使用Python 2.7作为引擎。

  • 对于每个模型,我都可以导出该模型的python脚本。新解决方案的目标将存储在SQL Server 2017托管的企业级地理数据库上,并提供机器学习服务(其中包括Python支持!)。理想情况下,我希望能够将此导出的Python代码存储在存储过程中,该存储过程可以称为较大SSIS数据流的一部分。我已经解决的另一种方法是在* .py文件作为参数的ArcGIS副本的python.exe上使用EXECUTE PROCESS任务。

  • 我在线找到了archook项目,该项目可以很好地将Python环境指向相应的ArcGIS目录。

障碍:

  • 我在处理基于ArcGIS的模块的导入语句时遇到困难。我正在使用导出的python的精简版本-仅导入语句。

EXEC sp_execute_external_script @language = N'Python', @script = N' import archook archook.get_arcpy() import arcpy'

  • 我已经探讨了一些潜在的兼容性问题。 ArcGIS是32位的,而SQL Server是64位的,因此我安装了64位后台地理处理工具,ArcHook似乎可以成功找到该工具。此外,ArcGIS使用Python 2.7,而MLS使用Python 3.5,因此我修改了一个版本的ArcHook模块以映射到SQL Server Pro python目录(该文件基于3.5)。在两个示例中,MLS似乎都能找到arcpy模块,但无法加载它。由于Python版本控制,我倾向于认为Arc Pro解决方案更合理。我在执行时收到的实际错误消息:
  

文件   “ C:\ PROGRA〜1 \ MICROS〜2 \ MSSQL1〜2.DEV \ MSSQL \ EXTENS〜1 \ DEV1701 \ 02830305-BCB6-49B3-AEEF-51DDB28FF180 \ sqlindb.py”,   第37行,进行转换       在第72行中,导入arcpy文件“ C:\ Program Files \ ArcGIS \ Pro \ Resources \ arcpy \ arcpy__init __。py”          从arcpy.geoprocessing导入gp文件“ C:\ Program Files \ ArcGIS \ Pro \ Resources \ arcpy \ arcpy \ geoprocessing__init __。py”,   第14行       从._base导入*文件“ C:\ Program Files \ ArcGIS \ Pro \ Resources \ arcpy \ arcpy \ geoprocessing_base.py”,行   14,在       导入arcgisscripting ImportError:DLL加载失败:找不到指定的模块。

     

SqlSatelliteCall错误:执行错误。检查输出以了解更多   信息。来自外部脚本的标准输出消息:SqlSatelliteCall   功能失败。请参阅控制台输出以获取更多信息。   追溯(最近一次通话):文件“ C:\ Program Files \ Microsoft   的SQL   Server \ MSSQL14.DEV17 \ PYTHON_SERVICES \ lib \ site-packages \ revoscalepy \ computecontext \ RxInSqlServer.py”,   rx_sql_satellite_call中的第406行       rx_native_call(“ SqlSatelliteCall”,params)文件“ C:\ Program Files \ Microsoft SQL   Server \ MSSQL14.DEV17 \ PYTHON_SERVICES \ lib \ site-packages \ revoscalepy \ RxSerializable.py”,   第291行,在rx_native_call中       ret = px_call(函数名,参数)RuntimeError:revoscalepy函数失败。

如果有人对在外部环境中运行ArcGIS脚本或在MLS中运行外部脚本有任何见识,那么我将不胜感激。

0 个答案:

没有答案