Saya menggunakan beberapa ESRI .NET DLL di beberapa skrip Python khusus. Misalnya ESRI.ArcGIS.Geodatabase.dll
Di mesin pengembangan saya, DLL ini ada di folder C: \ Program Files (x86) \ ArcGIS \ DeveloperKit10.0 \ DotNet .
Sekarang saya ingin menyebarkan skrip ke komputer lain. Namun, kecuali jika pengguna memiliki ArcObjects SDK untuk .NET yang terpasang, DLL ini tidak ada di mesin mereka.
Lebih buruk lagi, meminta pengguna menginstal SDK, berarti mereka juga perlu menginstal Visual Studio, yang merupakan unduhan 600MB (untuk versi Express gratis). Jika mereka tidak memiliki Visual Studio penginstal ESRI tidak akan melanjutkan.
Jadi haruskah DLL ini dibundel dengan skrip (yang dapat menyebabkan masalah kompatibilitas jika paket layanan ditambahkan), atau adakah metode penyebaran yang lebih mudah?
Perbarui :
DLL NET sekarang diinstal secara default di versi 10 dari ArcGIS. Mereka ditempatkan di GAC (Global Assembly Cache). Anda dapat melihatnya di Windows Explorer (di Windows 7) di C:\Windows\assembly
(tidak benar-benar folder, tetapi Anda dapat melihat apa yang ada di GAC). Melihat properti rakitan menunjukkan DLL harus berada dalam folder seperti C:\Windows\assembly\GAC_32\ESRI.ArcGIS.System\10.0.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll
tetapi file ini sepertinya tidak ada.
Python untuk .NET tampaknya sekarang mengharuskan Anda menggunakan nama lengkap saat menambahkan referensi ke DLL ini. Melihat kode sumbernya, sepertinya itu sebelumnya menggunakan LoadWithPartialName sehingga Anda sebelum Anda dapat menggunakan kode di bawah ini. Ini sekarang mengembalikan pengecualian FileNotFound.
import clr
clr.AddReference("ESRI.ArcGIS.System")
from ESRI.ArcGIS.System import *
Sekarang sepertinya Anda perlu menggunakan yang berikut ini:
import clr
clr.AddReference("ESRI.ArcGIS.System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86")
from ESRI.ArcGIS.System import *
sumber
Di 9.x, Anda dapat menginstal ArcGIS dengan dukungan .NET yang IIRC menyertakan .NET PIA,
namun dalam 10.0 Anda harus menginstal SDK: http://support.esri.com/en/knowledgebase/techarticles/detail/34178- Lihat jawaban @ Petr , .NET PIA diinstal ke GAC saat Anda menginstal ArcGIS Desktop 10 .Menurut halaman ini , Visual Studio tidak diharuskan untuk menginstal ArcObjects 10 SDK - tetapi itu TIDAK benar karena installer menolak untuk melanjutkan tanpa VS IDE yang didukung terpasang.
Jika Anda menggunakan comtypes, Anda bisa menggunakan COM OLBs daripada .NET PIAs. Tentu saja Anda masih harus menginstal comtypes atau menyebarkannya dengan skrip Anda (tidak yakin bagaimana tetapi saya pikir itu bisa dilakukan), tetapi itu akan menghilangkan ketergantungan .NET assembly.
Lihat juga pertanyaan terkait:
sumber
Anda tidak dapat membundel dll karena itu melanggar perjanjian lisensi Anda dan mereka baru-baru ini sangat kesal. Anda juga perlu menginstal AGS 10 .NET, atau ArcObjects 10 .NET SDK, dan, jelas, Visual Studio.
Kami baru saja mengalami masalah kami sendiri di sekitar masalah yang sama. Kami telah menggunakan .NET toolbox pada server AGS 10 Java, dengan dll. Berhasil, sampai kami diberitahu itu melanggar perjanjian lisensi kami dan kami harus membeli komponen lain atau menghadapi konsekuensinya.
Agak bau, tapi hei ho. Berarti 2 AGS 10 lisensi untuk mereka, jadi seseorang senang ...
sumber
Mengapa tidak menggunakan ArcGIS Engine Runtime ? Ini adalah runtime untuk aplikasi ArcGIS / ArcObjects mandiri. Jika Anda tidak menggunakan hal-hal Desktop UI apa pun dalam skrip Anda, apakah itu berfungsi?
sumber