Estoy usando varias DLL de ESRI .NET en algunos scripts de Python personalizados. Por ejemplo ESRI.ArcGIS.Geodatabase.dll
En mi máquina de desarrollo, estas DLL se encuentran en la carpeta C: \ Archivos de programa (x86) \ ArcGIS \ DeveloperKit10.0 \ DotNet .
Ahora deseo implementar los scripts en otra máquina. Sin embargo, a menos que el usuario tenga instalado ArcObjects SDK for .NET, estas DLL faltan en su máquina.
Peor aún, solicitar que el usuario instale el SDK significa que también necesita instalar Visual Studio, que es una descarga de 600 MB (para la versión Express gratuita). Si no tienen Visual Studio, el instalador de ESRI no continuará.
Entonces, ¿deberían estas DLL estar agrupadas con los scripts (que pueden causar problemas de compatibilidad si se agregan paquetes de servicio), o hay un método de implementación más fácil?
Actualización :
Las DLL de .NET ahora están instaladas por defecto en la versión 10 de ArcGIS. Se colocan en el GAC (Caché de la Asamblea Global). Puede verlos en el Explorador de Windows (en Windows 7) en C:\Windows\assembly
(no es realmente una carpeta, pero puede ver lo que está en el GAC). Mirar las propiedades del ensamblaje indica que la DLL debe estar en una carpeta como, C:\Windows\assembly\GAC_32\ESRI.ArcGIS.System\10.0.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll
pero este archivo no parece existir.
Python para .NET parece requerir ahora que use el nombre completo al agregar una referencia a estas DLL. Mirando su código fuente, parece que anteriormente usó LoadWithPartialName para que antes pueda usar el código a continuación. Esto ahora devuelve una excepción FileNotFound.
import clr
clr.AddReference("ESRI.ArcGIS.System")
from ESRI.ArcGIS.System import *
Ahora parece que necesita usar lo siguiente:
import clr
clr.AddReference("ESRI.ArcGIS.System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86")
from ESRI.ArcGIS.System import *
fuente
En 9.x, podría instalar ArcGIS con soporte .NET, que IIRC incluía .NET PIA,
sin embargo,en 10.0 debe instalar el SDK:http://support.esri.com/en/knowledgebase/techarticles/detail/34178- Consulte la respuesta de @ Petr , los PIA de .NET se instalan en el GAC cuando instala ArcGIS Desktop 10 .De acuerdo con esta página , Visual Studio no necesita instalar ArcObjects 10 SDK, pero eso NO es correcto ya que el instalador se niega a continuar sin un VS IDE compatible instalado.
Si usa comtypes , podría usar los OLB COM en lugar de los PIA .NET. Por supuesto, aún tendría que instalar comtypes o implementarlo con su script (no estoy seguro de cómo hacerlo, pero creo que se puede hacer), pero eliminaría la dependencia del ensamblado .NET.
Ver también preguntas relacionadas:
fuente
No puede agrupar los archivos dll, ya que va en contra de su acuerdo de licencia y recientemente se pusieron muy nerviosos al respecto. Necesita instalar AGS 10 .NET o ArcObjects 10 .NET SDK y, obviamente, Visual Studio.
Acabamos de tener nuestros propios problemas en torno al mismo problema. Habíamos desplegado una caja de herramientas .NET en un servidor Java AGS 10, con los dlls cerrados. Funcionó de maravilla, hasta que nos dijeron que violaba nuestro acuerdo de licencia y que tendríamos que comprar los otros componentes o enfrentar las consecuencias.
Apesta, pero oye, ho. Significa 2 licencias AGS 10 para ellos, así que alguien feliz ...
fuente
¿Por qué no usar ArcGIS Engine Runtime ? Es el tiempo de ejecución para las aplicaciones independientes de ArcGIS / ArcObjects. Si no está utilizando ningún elemento de la IU de escritorio en sus scripts, ¿debería funcionar?
fuente