Eine Anforderung unserer Webanwendung besteht darin, einen bestimmten dynamischen Kartendienst auf einem Timer automatisch zu aktualisieren.
Die Anforderung bezieht sich auf einen Client mit einer dynamischen MS, die regelmäßig Aktualisierungen von GPS-Sensoren erhält.
Vergessen wir zunächst die Feature-Services und WMS- oder Image-Services, die sich häufig ändern können.
In Bezug auf die Codierung war es ziemlich einfach, dies zu erreichen.
Unsere Tester möchten jetzt einen dynamischen Kartendienst, der sich häufig ändert (idealerweise mindestens alle 15 Sekunden), damit sie sehen können, wie dies im Frontend aussieht. Hilft uns auch dabei, unseren Kunden die neuen Funktionen zu demonstrieren.
Ich habe die Esri-Beispielserver durchsucht, kann aber keinen finden.
Ist jemandem ein solcher öffentlicher Dienst bekannt, den wir für schnelle Tests nutzen könnten?
Wenn die Antwort Nein lautet, müssen Skripte vorhanden sein, um die GPS-Tracking-Bewegung zu emulieren und möglicherweise die Position einiger Punkte weiter zu ändern. Dann kann ich meinen eigenen Dienst einrichten.
quelle
Antworten:
Ich habe kürzlich eine ähnliche Frage gestellt. Die Antworten dort können Ihnen helfen.
F: Quellen für räumliche Echtzeitdaten
quelle
Wenn Sie die REST-API verwenden, können Sie dies meiner Meinung nach ohne den arcgis-Server tun. Wenn eine Anforderung für eine Karte eingeht , geben Sie eine JSON-Zeichenfolge zurück, die der REST-API-Spezifikation entspricht und neue Speicherorte darstellt.
Bei Windows kann dies durch Implementierung eines WCF-Rest-Dienstes erfolgen . Der Dienst würde eine Reihe von Fahrzeugen im Speicher behalten. Jedes Fahrzeug würde Standort, Kurs, Geschwindigkeit und Zeitstempel haben. Wenn eine Anfrage eingeht, wird der Standort basierend darauf aktualisiert, wie viel Zeit seit dem letzten Zeitstempel vergangen ist, wobei eine gewisse Entfernung basierend auf Geschwindigkeit und Kurs ausgeglichen wird.
Wenn Ihre Fahrzeuge Straßen folgen müssen, können Sie für jedes Fahrzeug einen Pfad in eine Datei (x, y und Zeit) einfügen. Der REST-Service könnte dann die Datei verwenden, um Positionsaktualisierungen zurückzugeben, die entlang dieser Pfade folgen.
Ihr Kunde würde einen Timer benötigen, um alle 15 Sekunden eine Anfrage zu stellen. Fügen Sie der URL einen Zeitstempel hinzu, um das Caching zu verhindern.
Bearbeiten
Eine andere Alternative wäre die Verwendung einer Laienerweiterung. Erstellen Sie einen MXD, der auf einen Dummy-Featurelayer zeigt. Wenn ILayerExtensionDraw.BeforeLayerDraw zum ersten Mal aufgerufen wird, muss IFeatureLayer.Featureclass durch eine In-Memory-Feature-Class ersetzt werden (erstellt mit inmemoryworkspacefactory ). Die Punkt-Feature-Class würde Fahrzeugstandorte mit Feldern für Kurs, Geschwindigkeit und Zeitstempel darstellen. Jedes Mal, wenn BeforeLayerDraw aufgerufen wird, werden die Speicherorte basierend auf Geschwindigkeit, Richtung und Zeit seit dem letzten Zeitstempel aktualisiert. Vergessen Sie nicht, dass Ihre Layerxtension IPersistStream implementiert .
quelle
Die Natur eines dynamischen Kartendienstes besteht darin, dass er pro Anforderung im laufenden Betrieb gerendert wird. Um Änderungen auf der Clientseite zu sehen, muss eine neue Kartenanforderung ausgegeben werden.
Standardmäßig platziert ein über ArcGIS Server gehosteter dynamischer Kartendienst eine "Schemasperre" für die Daten, sodass Änderungen an den Quelldaten während der Ausführung des Dienstes nicht zulässig sind.
Dies kann durch Bearbeiten der Eigenschaften in der Konfigurationsdatei für Kartendienste (.cfg) behoben werden. Ein
<SchemaLockingEnabled>false</SchemaLockingEnabled>
Eintrag ermöglicht Änderungen an den Quelldaten, während der Dienst ausgeführt wird.Siehe http://help.arcgis.com/de/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//0093000000mr000000
quelle