将json数据arcgis桌面转换为javascript api FeatureLayer和图形

问题描述 投票:0回答:1

我有来自arcgis桌面的数据json,我想将数据json路径转换为lat和long。任何线索/样本数据Semilar我将不胜感激。我尝试使用FeatureCollection和图形,但现在仍然可以使用,路径仍未显示

{
    "displayFieldName": "",
    "fieldAliases": {
        "FID": "FID",
        "LAYER": "LAYER",
        "ELEVATION": "ELEVATION",
        "objek": "objek",
        "autocad_el": "autocad_el"
    },
    "geometryType": "esriGeometryPolyline",
    "spatialReference": {
        "wkt": "PROJCS[\"WGS_84_UTM_zone_48S\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS84\",SPHEROID[\"WGS84\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"false_easting\",500000.0],PARAMETER[\"false_northing\",10000000.0],PARAMETER[\"central_meridian\",105.0],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"latitude_of_origin\",0.0],UNIT[\"Meter\",1.0]]"
    },
    "fields": [{
        "name": "FID",
        "type": "esriFieldTypeOID",
        "alias": "FID"
    }, {
        "name": "LAYER",
        "type": "esriFieldTypeString",
        "alias": "LAYER",
        "length": 17
    }, {
        "name": "ELEVATION",
        "type": "esriFieldTypeSingle",
        "alias": "ELEVATION"
    }, {
        "name": "objek",
        "type": "esriFieldTypeString",
        "alias": "objek",
        "length": 8
    }, {
        "name": "autocad_el",
        "type": "esriFieldTypeSingle",
        "alias": "autocad_el"
    }],
    "features": [{
        "attributes": {
            "FID": 0,
            "LAYER": "Unknown Line Type",
            "ELEVATION": 0,
            "objek": "Jembatan",
            "autocad_el": 0
        },
        "geometry": {
            "paths": [
                [
                    [667098.90123699955, 9257859.4605370834],
                    [667109.77750562597, 9257831.1962901894]
                ]
            ]
        }
    }, {
        "attributes": {
            "FID": 1,
            "LAYER": "Unknown Line Type",
            "ELEVATION": 0,
            "objek": "Jembatan",
            "autocad_el": 0
        },
        "geometry": {
            "paths": [
                [
                    [667117.89141641324, 9257866.4691105094],
                    [667124.89213822049, 9257869.1585630793],
                    [667117.89141641324, 9257866.4691105094],
                    [667131.21670079546, 9257831.8461579103],
                    [667138.21742260281, 9257834.5356104802],
                    [667130.28492039, 9257831.4862311725],
                    [667125.74146018294, 9257829.7365873083],
                    [667112.40792995633, 9257864.3595399056],
                    [667117.89141641324, 9257866.4691105094]
                ]
            ]
        }
    }, {
        "attributes": {
            "FID": 2,
            "LAYER": "Unknown Line Type",
            "ELEVATION": 50.256,
            "objek": "Jembatan",
            "autocad_el": 50.256
        },
        "geometry": {
            "paths": [
                [
                    [665870.15499507985, 9289075.4166197143],
                    [665864.89414641913, 9289045.7626556922]
                ]
            ]
        }
    }, {
        "attributes": {
            "FID": 3,
            "LAYER": "Unknown Line Type",
            "ELEVATION": 50.256,
            "objek": "Jembatan",
            "autocad_el": 50.256
        },
        "geometry": {
            "paths": [
                [
                    [665853.01188478863, 9289078.4260071609],
                    [665847.76752781635, 9289048.6020777356]
                ]
            ]
        }
    }]
}

我的编码只是为了首先在地图中显示路径,我已尽力而为,但仍然无法正常工作

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <title>Flickr</title>

    <link rel="stylesheet" href="https://js.arcgis.com/3.30/esri/css/esri.css">
    <style>
      html, body, #map {
        height:100%;
        width:100%;
        margin:0;
        padding:0;
      }
      .esriScalebar{
        padding: 20px 20px;
      }
      #map{
        padding:0;
      }
    </style>

    <script>var dojoConfig = { parseOnLoad: true };</script>
    <script src="https://js.arcgis.com/3.30/"></script>
    <script>
      var map;
      require([
        "esri/map",
        "esri/layers/FeatureLayer",
        "esri/dijit/PopupTemplate",
        "esri/layers/GraphicsLayer",
        "esri/request",
        "esri/geometry/Point",
        "esri/geometry/Polyline",
        "esri/graphic",
        "dojo/on",
        "dojo/_base/array",
        "dojo/domReady!"
      ], function(
        Map,
        FeatureLayer,
        GraphicsLayer,
        PopupTemplate,
        esriRequest,
        Point,
        Polyline,
        Graphic,
        on,
        array,
      ) {

        var featureLayer;
        var map = new Map("map", {
            basemap: "topo",
            center: [-80, 35],
            zoom: 3

        });

        //create a feature collection for the flickr photos
        var featureCollection = {
          "layerDefinition": null,
          "featureSet": {
            "geometryType": "esriGeometryPolyline",
            "features": [],
          }
        };

        featureCollection.layerDefinition =
            {
            "displayFieldName": "",
            "fieldAliases": {
                "FID": "FID",
                "LAYER": "LAYER",
                "ELEVATION": "ELEVATION",
                "objek": "objek",
                "autocad_el": "autocad_el"
            },

            "geometryType": "esriGeometryPolyline",
            "spatialReference": {
                "wkt": "PROJCS[\"WGS_84_UTM_zone_48S\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS84\",SPHEROID[\"WGS84\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"false_easting\",500000.0],PARAMETER[\"false_northing\",10000000.0],PARAMETER[\"central_meridian\",105.0],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"latitude_of_origin\",0.0],UNIT[\"Meter\",1.0]]"
            },
            "fields": [{
                "name": "FID",
                "type": "esriFieldTypeOID",
                "alias": "FID"
            }, {
                "name": "LAYER",
                "type": "esriFieldTypeString",
                "alias": "LAYER",
                "length": 17
            }, {
                "name": "ELEVATION",
                "type": "esriFieldTypeSingle",
                "alias": "ELEVATION"
            }, {
                "name": "objek",
                "type": "esriFieldTypeString",
                "alias": "objek",
                "length": 8
            }, {
                "name": "autocad_el",
                "type": "esriFieldTypeSingle",
                "alias": "autocad_el"
            }]
        }
        featureLayer = new FeatureLayer(featureCollection);
        map.addLayers([featureLayer]);

        var test = {
            "attributes": {
                "FID": 14,
                "LAYER": "Unknown Line Type",
                "ELEVATION": 264.078,
                "objek": "Jembatan",
                "autocad_el": 264.078
            },
            "geometry": {
                "paths": [
                    [
                        [727325.26162305428, 9274215.871237101],
                        [727331.60267731792, 9274211.8820490874],
                        [727351.38445778389, 9274243.265661044],
                        [727345.03515767597, 9274247.2648470215],
                        [727351.38445778389, 9274243.265661044],
                        [727352.22553390206, 9274242.735768903],
                        [727356.34845605015, 9274240.1362980176],
                        [727336.57492142834, 9274208.752686061],
                        [727325.26162305428, 9274215.871237101]
                    ]
                ]
            }
        };
        var graphic = new Graphic(test);
        featureLayer.applyEdits(graphic, null, null);
        console.log(graphic)


    });
    </script>
  </head>
  <body >
    <div id="map"></div>
  </body>

</html>
arcgis arcgis-js-api
1个回答
2
投票

您必须在WGS84 EPSG:4326中重新投影几何形状

require([
  "esri/geometry/projection",
  "esri/SpatialReference",
  "esri/geometry/Polyline",
  "esri/graphic"
], function(projection, SpatialReference, Polyline, Graphic) {

  projection.load();

  var sourceSR = new SpatialReference(featureCollection.spatialReference.wkt)
  var destSR = new SpatialReference(4326);

  //lets pretend you have a valid featureCollection containing polylines only
  var projGraphics = featureCollection.features.map(function(feature) {
    var polyline = new Polyline(sourceSR);
    feature.geometry.paths.forEach(function(path) {
      polyline.addPath(path);
    });
    var projGeometry = projection.project(polyline, destSR);

    //note that the symbol of the graphic is not defined and must be defined in the featureLayer renderer
    return new Graphic(projGeometry, null, feature.attributes);

  });

  console.log(projGraphics)
});
© www.soinside.com 2019 - 2024. All rights reserved.