Können benutzerdefinierte Kartenkacheln über ArcObjects in meinem ArcGIS 10 Desktop AddIn verwendet werden?


8

Kann ich benutzerdefinierte Kartenkacheln in ArcMap über unser ArcGIS 10 Desktop AddIn programmgesteuert verwenden und rendern?

Das AddIn wird mit dem ArcObjects SDK für C # /. NET und ArcGIS 10 erstellt. Das Ziehen und Rendern von Kartenkacheln ist NICHT die Hauptfunktion des AddIn. Aber wir würden diese Funktion definitiv gerne implementieren, wenn dies möglich ist.

Weitere Einzelheiten:

  • Ich habe einen Tipp erhalten, dass die ITiledMapServer2-Schnittstelle betroffen ist, aber es ist mir unklar, und in ArcObjects-Dokumenten fehlen Informationen zu dieser Aufgabe. Die entsprechende Klasse in der ArcGIS for Flex-API ist TiledMapServiceLayer. Dies ist jedoch wiederum ein ArcMap-Add-In im Desktopbereich und keine Webanwendung.
  • Wir verfügen über eine interne Software, mit der Sie unsere eigenen Kacheln im gleichen Zoom-, Kachel-Y- und Kachel-X-Kachelschema wie die JS / Flash-APIs von Google Maps erstellen können.
  • Wir verwenden Apache, um die Kartenkacheln bereitzustellen, und verwenden daher derzeit in keiner Weise ArcGIS Server (z. B. Erstellen der Kacheln, Veröffentlichen als ArcGIS Server-Kartendienst usw.).
  • Ich habe die Frage an SO gesendet und eine Empfehlung erhalten, hier zu posten.

Vielen Dank im Voraus.


Wenn Sie nur versuchen, die Kartenkacheln auf einem ArcGIS-Server aufzurufen, fügen Sie den Dienst einfach als Layer in Ihre MXD ein.
Michael Todd

Er sagte "kein ArcGIS-Server" - nur Apache, sonst ist es ganz einfach, wie Sie sagen.
Herb

Danke Michael. Weil sich die Kacheln nicht auf einem ArcGIS-Server befinden oder in irgendeiner Weise von einem ArcGIS-Server bereitgestellt werden. Dies sind unsere benutzerdefinierten Kacheln, die derzeit von einem Computer ausgeführt werden, auf dem Apache ausgeführt wird, der von uns verwaltet wird. Warum? Wir haben verschiedene Web-Apps, die die Google Maps-API und die ArcGIS-API für Flex verwenden und diese Kacheln verwenden. Und es wäre schön, diese Infrastruktur in unserem Desktop AddIn einfach zu nutzen. Wenn die Bereitstellung unserer Kacheln als veröffentlichter Kartendienst über ArcGIS Server die einzige Möglichkeit ist, dies zu tun, ist dies in Ordnung - Sie möchten dies nur im Voraus wissen.
Josh

(Hoppla, beschönigt Ihren dritten Aufzählungspunkt.) Sie könnten versuchen, die Bilder so zu strukturieren, dass Sie die Kacheln nach Bedarf anfordern können (X / Y-Verzeichnisnamen, XML-Suche usw.), aber Sie würden im Wesentlichen schreiben Ihr eigener "Image Tile Server" von Grund auf neu. Es wäre viel einfacher, ein vorab geschriebenes Tool seine Arbeit erledigen zu lassen (wenn Sie Zugriff darauf haben), als es selbst zu schreiben.
Michael Todd

Antworten:


8

Ich denke, Sie möchten eine benutzerdefinierte Ebene implementieren. Ich weiß nicht, wie Sie sonst Daten in ArcMap rendern würden. Außerhalb einer rein akademischen Übung habe ich es nicht getan. Es gibt eine Starter Seite von Informationen zur Verfügung hier , mit einer Liste von minimalen Schnittstellen , die Sie benötigen würden zu implementieren. Auf der positiven Seite gibt es ein Entwicklerbeispiel. Der Nachteil ist, dass Sie ernsthaft nicht triviales Entwicklungsgebiet betreten. Spaß, aber nicht trivial.

Oder Sie könnten sich ansehen, was die Mitarbeiter des ArcBruTile-Codeplex-Projekts getan haben, was dem, was Sie versuchen, sehr ähnlich sieht.


Ja, benutzerdefinierte Ebenen sind der richtige Weg. Es ist nicht trivial, aber auch keine entmutigende Aufgabe. Da Sie Raster und keine Vektoren zeichnen, ist es am schwierigsten, die Bitmaps an der richtigen Stelle im Win32-Gerätekontext zu zeichnen. Ich würde auch eine Art In-Memory-Caching-Logik empfehlen.
Petr Krebs

@petr_k - Direkt am Geld, da Caching kritisch ist - der Netzwerkverkehr wird Ihre Leistung sonst beeinträchtigen. Die Leute auf der referenzierten Codeplex-Site (behaupten) haben sich damit befasst. Ich habe ihren Code nicht durchgesehen, um zu sehen, wie sie entscheiden, wie lange sie an einer Kachel festhalten sollen.
Herb

Meine Herren, ich danke Ihnen beiden. @Herb besonders, vielen Dank für den Codeplex-Link zum ArcBruTile-Projekt. Es sieht tatsächlich so aus, wie wir es versuchen. Ich habe den Code gescannt. Das Caching scheint behandelt zu werden, indem zuerst versucht wird, Kacheln von der Festplatte zu laden. Nicht dort? Laden Sie sie dann über das Web und schreiben Sie sie auf die Festplatte.
Josh

@Josh - Ich bin froh zu helfen - das ArcBruTile-Projekt hat mir auch Spaß gemacht. Möchten Sie die Frage als "beantwortet" markieren?
Herb

1

Addins dienen der Grundfunktionalität und Anpassungen wie benutzerdefinierte Ebenen erfordern eine COM-Lösung und können mithilfe von ArcObjects & .NET durchgeführt werden. Dies kann jedoch nicht mit Addins durchgeführt werden.


Vielleicht, aber mit der ArcObjects-API für ArcGIS 10 können wir auf AddIn-Ebene einiges erreichen. Eine Demo unseres AddIn: youtube.com/watch?v=m2YRrCk3aKI
Josh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.