Darstellung ArcGIS Online Basemap in Verbindung mit Gauß-Krüger Daten?

2539
5
Jump to solution
07-14-2017 12:53 AM
MichaelLodes2
Occasional Contributor

Liebe Community,

ich arbeite mit ArcGIS API for Javascript 4.4 und würde gerne meine Daten, welche im Gauß-Krüger-4 (EPSG: 31468) vorliegen, mit einer der verfügbaren Basemaps (z.B. "streets") hinterlegen.


Wie gehe ich am besten vor? Kann die Basemap in GK4 dargestellt werden oder müssen meine GK4-Daten bei jedem neuen Ladevorgang der Karte in WGS84 transformiert werden, damit sie zur Basemap passen?

Unten seht ihr meinen Code mit einer Basemap, welche automatisch in WGS84 geladen wird. Der definierte GK4-Extent und Zoom kann danach offensichtlich nicht vollzogen werden.


Vielen Dank für eure Hilfe,

Grüße

Michael

require([
  "esri/Map",
  "esri/views/MapView",
  "dojo/domReady!"
], function(Map, MapView) {
  var map = new Map({
    basemap: "streets"
  });

  var view = new MapView({
    container: "viewDiv",  // Reference to the DOM node that will contain the view
    map: map               // References the map object created in step 3
  });
  
  
      view.extent = new Extent({
      xmin: 4400000.0,
      ymin: 5335500.0,
      xmax: 4413500.0,
      ymax: 5346000.0,
    

      spatialReference: {
        wkid: 31468
      }
      });
    
    view.center = [4409051.287, 5341122.644];
    view.zoom = 14;



    



  
});‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
1 Solution

Accepted Solutions
MarkKellermann
Esri Contributor

ArcGIS Online kann FeatureLayer on-the-fly transformieren!

Folgend der Code für meinen Test, geladen wird als Basemap "streets" und dazu wird eine FeatureLayer in der Projektion 31468 geladen:

 

 require([
        "esri/Map",
        "esri/views/MapView",

        "esri/layers/FeatureLayer",

        "dojo/domReady!"
      ],
      function(
        Map, MapView,
        FeatureLayer
      ) {

        var map = new Map({
          basemap: "streets"
        });

       var view = new MapView({
          container: "viewDiv",
         map: map,
        center: [12.1, 54.11],
        zoom: 12,
        });

        /********************
         * Add feature layer
         ********************/

        
        var featureLayer = new FeatureLayer({
          url: "https://portal03.eggits.net/server/rest/services/Hosted/buffer_31468/FeatureServer/0",
          //spatialReference: { wkid: 31468 },
        });

        map.add(featureLayer);

      });‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Das Ergebnis sieht folgendermaßen aus:

View solution in original post

5 Replies
LarsSchmitz
Occasional Contributor III

Die Layer müssen im selben Koordinatensystem vorliegen. Hintergrundkarten von ArcGIS Online nutzen Web Mercator. Daher kommt es in diesem Fall zu einem Konflikt.

Es gibt 2 Lösungsansätze: Du kannst eine eigene Hintergrundkarte in GK4 nutzen. Einfacher dürfte aber vermutlich sein, wenn Du Deine Features gleich in Web Mercator auf ArcGIS Online hostest. Dies erfordert eine Koordinatentransformation. Das kannst Du sehr einfach mit ArcGIS Pro bewerkstelligen, das Tool steht Euch im Rahmen des Startup Programms ja auch zur Verfügung.

mittenwalde

MichaelLodes2
Occasional Contributor

Da ich später mit Hilfe der ArcGIS Online Hintergrundkarte ein Routing/Navigation durchführen möchte, ist nur Lösung 2 o.Ä. relevant für mich. Ich werde also meine GK4-Daten in WGS84 transfomieren.

Meine Daten müssen jedoch regelmäßig mit einem externen GIS-Server synchronisiert werden, in dem die Koordinaten in GK4 vorliegen MÜSSEN. Deshalb brauche ich einen automatisierten Prozess, der meine Koordinaten hin- und hertransformiert.

Gibt es auch außerhalb von ArcGIS Pro eine JavaScript/PHP API, mit der man das tun kann? Oder geht das sogar mit ArcGIS Pro?

0 Kudos
LarsSchmitz
Occasional Contributor III

Für die Automatisierung mit ArcGIS bietet sich grundsätzlich die ArcGIS API for Python an. Das Arbeiten ist dank Junyper Notebooks sehr komfortabel und du kannst in deinen Skripten andere Bibliotheken einbinden. Hast Du da schon mal reingeschaut?

MarkKellermann
Esri Contributor

ArcGIS Online kann FeatureLayer on-the-fly transformieren!

Folgend der Code für meinen Test, geladen wird als Basemap "streets" und dazu wird eine FeatureLayer in der Projektion 31468 geladen:

 

 require([
        "esri/Map",
        "esri/views/MapView",

        "esri/layers/FeatureLayer",

        "dojo/domReady!"
      ],
      function(
        Map, MapView,
        FeatureLayer
      ) {

        var map = new Map({
          basemap: "streets"
        });

       var view = new MapView({
          container: "viewDiv",
         map: map,
        center: [12.1, 54.11],
        zoom: 12,
        });

        /********************
         * Add feature layer
         ********************/

        
        var featureLayer = new FeatureLayer({
          url: "https://portal03.eggits.net/server/rest/services/Hosted/buffer_31468/FeatureServer/0",
          //spatialReference: { wkid: 31468 },
        });

        map.add(featureLayer);

      });‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Das Ergebnis sieht folgendermaßen aus:

MichaelLodes2
Occasional Contributor

Hi,

vielen Dank für die Hilfe. Das klappt 🙂 Ich habe allerdings bisher mit CSVLayer statt FeatureLayer gearbeitet, damit funktioniert die Transformation "on-the-fly" anscheinend nicht. Dann werde ich auch auf FeatureLayer umsteigen.

Grüße

Michael