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



我有来自arcgis桌面的数据json,我想将数据json路径转换为lat和long。如果有任何线索/样本数据,我将不胜感激。我尝试过使用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>

您必须在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)
});

最新更新