class polyoli { constructor() { this.path = []; } pushPath(pathpoint) { this.path.push(pathpoint); } } var parser, xmlDoc, PolyArray; var PolygonObj = []; var refPoint = { y: 493081, x: 5878329, }; var text = `
bldg_56_ref FOOTPRINT p7523 p7523/V1 p7523/V2 p7523/V3 p7523/V4 p7523/V5 p7523/V6 p7523/V7 p7523/V8 p7523/V9 p7523/V10 p7523/V11 p7523/V12 p7523/V13 p7523/V14 p7523/V15 p7523/V16 p7523/V17 p7523/V18 base ground_2 ground_3 ground_1 curb_1 ground_4 ZEG_MOD_AP_1 IPS_OUT_AP_1 IPS_OUT_AP_2 IPS_OUT_AP_3 IPS_OUT_AP_4 IPS_OUT_AP_5 IPS_OUT_AP_6 IPS_OUT_AP_7 IPS_OUT_AP_8 IPS_OUT_AP_9 IPS_OUT_AP_10 IPS_OUT_AP_11 IPS_OUT_P_1 BDI_P_1 BDI_P_2 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 IPS_OUT_P_1 floor_1 base_height=0.10 SW_room_101 undest_room_101 FOOTPRINT p7529 p7529/V1 p7529/V2 p7529/V3 p7529/V4 ceiling_in_10 ceiling_in_3 ceiling_in_2 ceiling_in_13 wall_out_9 wall_out_10 wall_in_3 wall_in_27 wall_out_8 wall_in_13 stairs_3 stairs_1 stairs_2 rail_1 rail_2 REF_MOD_AP_1 REF_MOD_AP_8 REF_MOD_AP_9 DOF_door_8 SW_door_8 undest_door_8 dest_door_8 subroom_1 subroom_2 subroom_3 stairs_3 stairs_1 stairs_2 IPS_IN_AP_1 IPS_IN_AP_2 CAMERA_IN_AP_1 SW_room_102 undest_room_102 FOOTPRINT p7533 p7533/V1 p7533/V2 p7533/V3 p7533/V4 p7533/V5 p7533/V6 p7533/V7 p7533/V8 p7533/V9 p7533/V10 p7533/V11 p7533/V12 ceiling_in_7 ceiling_in_12 wall_out_6 wall_in_28 wall_in_12 wall_in_13 wall_out_7 REF_MOD_AP_7 REF_MOD_AP_21 DOF_door_14 SW_door_15 undest_door_15 dest_door_15 DOF_window_13 SW_window_13 undest_window_13 dest_window_13 DOF_window_14 SW_window_14 undest_window_14 dest_window_14 CAMERA_IN_AP_2 IPS_IN_AP_3 SW_room_103 undest_room_103 FOOTPRINT p7534 p7534/V1 p7534/V2 p7534/V3 p7534/V4 ceiling_in_6 ceiling_in_1 ceiling_in_17 wall_in_10 wall_in_9 wall_out_4 wall_out_5 wall_in_28 REF_MOD_AP_15 REF_MOD_AP_19 DOF_door_13 SW_door_14 undest_door_14 dest_door_14 DOF_window_15 SW_window_15 undest_window_15 dest_window_15 DOF_window_16 SW_window_16 undest_window_16 dest_window_16 CAMERA_IN_AP_3 IPS_IN_AP_4 SW_room_104 undest_room_104 FOOTPRINT p7535 p7535/V1 p7535/V2 p7535/V3 p7535/V4 p7535/V5 p7535/V6 p7535/V7 p7535/V8 ceiling_in_4 ceiling_in_5 wall_in_14 wall_in_7 wall_out_3 wall_in_9 REF_MOD_AP_14 DOF_door_10 SW_door_10 undest_door_10 dest_door_10 DOF_window_17 SW_window_17 undest_window_17 dest_window_17 DOF_window_18 SW_window_18 undest_window_18 dest_window_18 IPS_IN_AP_5 SW_room_105 undest_room_105 FOOTPRINT p7536 p7536/V1 p7536/V2 p7536/V3 p7536/V4 p7536/V5 p7536/V6 ceiling_in_8 ceiling_in_15 wall_out_2 wall_in_6 wall_in_7 wall_out_1 wall_in_5 REF_MOD_AP_3 REF_MOD_AP_13 DOF_door_12 SW_door_13 undest_door_13 dest_door_13 DOF_door_9 SW_door_9 undest_door_9 dest_door_9 CAMERA_IN_AP_4 IPS_IN_AP_6 SW_room_106 undest_room_106 FOOTPRINT p7537 p7537/V1 p7537/V2 p7537/V3 p7537/V4 p7537/V5 p7537/V6 p7537/V7 p7537/V8 ceiling_in_9 ceiling_in_16 wall_in_4 wall_in_5 wall_out_11 wall_in_3 REF_MOD_AP_2 DOF_door_11 SW_door_12 undest_door_12 dest_door_12 DOF_window_19 SW_window_19 undest_window_19 dest_window_19 CAMERA_IN_AP_5 IPS_IN_AP_7 SW_room_107 undest_room_107 FOOTPRINT p7538 p7538/V1 p7538/V2 p7538/V3 p7538/V4 p7538/V5 p7538/V6 p7538/V7 p7538/V8 p7538/V9 p7538/V10 p7538/V11 p7538/V12 ceiling_in_11 ceiling_in_14 wall_in_4 wall_in_6 wall_in_14 wall_in_10 wall_in_27 wall_in_12 DOF_door_11 SW_door_12 undest_door_12 dest_door_12 DOF_door_12 SW_door_13 undest_door_13 dest_door_13 DOF_door_10 SW_door_10 undest_door_10 dest_door_10 DOF_door_13 SW_door_14 undest_door_14 dest_door_14 DOF_door_14 SW_door_15 undest_door_15 dest_door_15 CAMERA_IN_AP_6 IPS_IN_AP_8 fitting_5 fitting_3 fitting_4 floor_2 base_height=3.13 SW_room_201 undest_room_201 FOOTPRINT p6717 p6717/V1 p6717/V2 p6717/V3 p6717/V4 ceiling_in_13 ceiling_out_7 wall_out_20 wall_in_15 wall_in_26 wall_out_19 wall_in_25 rail_3 REF_MOD_AP_4 REF_MOD_AP_11 REF_MOD_AP_12 DOF_door_2 SW_door_2 undest_door_2 dest_door_2 IPS_IN_AP_9 CAMERA_IN_AP_7 SW_room_202 undest_room_202 FOOTPRINT p6719 p6719/V1 p6719/V2 p6719/V3 p6719/V4 p6719/V5 p6719/V6 p6719/V7 p6719/V8 ceiling_in_12 ceiling_in_1 ceiling_out_6 wall_in_25 wall_in_24 wall_in_23 wall_out_17 wall_out_18 REF_MOD_AP_10 REF_MOD_AP_22 DOF_door_3 SW_door_3 undest_door_3 dest_door_3 DOF_window_5 SW_window_5 undest_window_5 dest_window_5 DOF_window_6 SW_window_6 undest_window_6 dest_window_6 IPS_IN_AP_10 CAMERA_IN_AP_8 SW_room_203 undest_room_203 FOOTPRINT p6720 p6720/V1 p6720/V2 p6720/V3 p6720/V4 ceiling_in_17 ceiling_out_5 wall_out_16 wall_out_15 wall_in_22 wall_in_20 wall_in_23 REF_MOD_AP_18 REF_MOD_AP_20 DOF_window_7 SW_window_7 undest_window_7 dest_window_7 DOF_window_8 SW_window_8 undest_window_8 dest_window_8 DOF_door_4 SW_door_4 undest_door_4 dest_door_4 IPS_IN_AP_11 CAMERA_IN_AP_9 SW_room_204 undest_room_204 FOOTPRINT p6721 p6721/V1 p6721/V2 p6721/V3 p6721/V4 p6721/V5 p6721/V6 p6721/V7 p6721/V8 ceiling_in_5 ceiling_out_4 wall_in_21 wall_out_14 wall_in_22 wall_in_19 REF_MOD_AP_17 DOF_window_9 SW_window_9 undest_window_9 dest_window_9 DOF_window_10 SW_window_10 undest_window_10 dest_window_10 DOF_door_5 SW_door_5 undest_door_5 dest_door_5 IPS_IN_AP_12 SW_room_205 undest_room_205 FOOTPRINT p6737 p6737/V1 p6737/V2 p6737/V3 p6737/V4 ceiling_in_15 ceiling_out_1 wall_out_12 wall_out_13 wall_in_21 wall_in_18 wall_in_17 REF_MOD_AP_6 REF_MOD_AP_16 DOF_window_11 SW_window_11 undest_window_11 dest_window_11 DOF_door_7 SW_door_7 undest_door_7 dest_door_7 CAMERA_IN_AP_10 IPS_IN_AP_13 SW_room_206 undest_room_206 FOOTPRINT p6738 p6738/V1 p6738/V2 p6738/V3 p6738/V4 ceiling_in_16 ceiling_out_2 wall_out_21 wall_in_17 wall_in_15 wall_in_16 REF_MOD_AP_5 DOF_window_12 SW_window_12 undest_window_12 dest_window_12 DOF_door_6 SW_door_6 undest_door_6 dest_door_6 IPS_IN_AP_14 CAMERA_IN_AP_11 SW_room_207 undest_room_207 FOOTPRINT p6739 p6739/V1 p6739/V2 p6739/V3 p6739/V4 p6739/V5 p6739/V6 p6739/V7 p6739/V8 p6739/V9 p6739/V10 p6739/V11 p6739/V12 p6739/V13 p6739/V14 p6739/V15 p6739/V16 p6739/V17 p6739/V18 ceiling_in_14 ceiling_out_8 wall_in_16 wall_in_18 wall_in_19 wall_in_20 wall_in_24 wall_in_26 DOF_door_6 SW_door_6 undest_door_6 dest_door_6 DOF_door_7 SW_door_7 undest_door_7 dest_door_7 DOF_door_5 SW_door_5 undest_door_5 dest_door_5 DOF_door_4 SW_door_4 undest_door_4 dest_door_4 DOF_door_3 SW_door_3 undest_door_3 dest_door_3 DOF_door_2 SW_door_2 undest_door_2 dest_door_2 IPS_IN_AP_15 CAMERA_IN_AP_12 fitting_6 o19 fitting_2 fitting_1 floor_3 base_height=6.42 SW_room_301 undest_room_301 FOOTPRINT ce_out_6_f9_4 ce_out_6_f9_4/V1 ce_out_6_f9_4/V2 ce_out_6_f9_4/V3 ce_out_6_f9_4/V4 ceiling_out_6 SW_room_302 undest_room_302 FOOTPRINT ce_out_5_f9_2 ce_out_5_f9_2/V1 ce_out_5_f9_2/V2 ce_out_5_f9_2/V3 ce_out_5_f9_2/V4 ceiling_out_5 SW_room_303 undest_room_303 FOOTPRINT ce_out_4_f10_2 ce_out_4_f10_2/V1 ce_out_4_f10_2/V2 ce_out_4_f10_2/V3 ce_out_4_f10_2/V4 ceiling_out_4 SW_room_304 undest_room_304 FOOTPRINT ce_out_1_f10_2 ce_out_1_f10_2/V1 ce_out_1_f10_2/V2 ce_out_1_f10_2/V3 ce_out_1_f10_2/V4 ceiling_out_1 SW_room_305 undest_room_305 FOOTPRINT ce_out_2_f7_2 ce_out_2_f7_2/V1 ce_out_2_f7_2/V2 ce_out_2_f7_2/V3 ce_out_2_f7_2/V4 ceiling_out_2 SW_room_306 undest_room_306 FOOTPRINT ce_out_3_f12_5 ce_out_3_f12_5/V1 ce_out_3_f12_5/V2 ce_out_3_f12_5/V3 ce_out_3_f12_5/V4 ce_out_3_f12_5/V5 ceiling_out_7 SW_room_307 undest_room_307 FOOTPRINT ce_out_3_f12_6 ce_out_3_f12_6/V1 ce_out_3_f12_6/V2 ce_out_3_f12_6/V3 ce_out_3_f12_6/V4 ceiling_out_8 IPS_IN_AP_16
` parser = new DOMParser(); var aboveAll = []; window.onload = function () { require([ "esri/Map", "esri/views/SceneView", "esri/layers/TileLayer", "esri/layers/SceneLayer", "esri/layers/GraphicsLayer", "esri/geometry/Point", "esri/geometry/projection", "esri/Graphic", "dojo/domReady!", ], function ( Map, SceneView, TileLayer, SceneLayer, GraphicsLayer, Point, projection, Graphic ) { map = new Map({ // basemap: "topo" }); view = new SceneView({ container: "mapDiv", map: map, scale: 1000, camera: { // autocasts as new Camera() position: { // autocasts as new Point() x: 8.896638, y: 53.054441, z: 40 } } }); tile = new TileLayer({ url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_WebMerc/MapServer", }) feature = new SceneLayer({ url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/BT56_rev576/SceneServer", }); map.add(feature); map.add(tile); var graphicsLayer = new GraphicsLayer(); map.add(graphicsLayer); projection.load().then(function () { xmlDoc = parser.parseFromString(text, "text/xml"); PolyArray = Array.from(xmlDoc.getElementsByTagName("Polygon")); PolyArray.forEach(polygon => { var polyObj = new polyoli(); var vertexes = Array.from(polygon.children); for (var x = 1; x < vertexes.length; x++) { var vertextChildren = vertexes[x].children[1].attributes; var esriP = new Point({ y: parseFloat(vertextChildren[0].nodeValue) + refPoint.x, x: parseFloat(vertextChildren[1].nodeValue) + refPoint.y, z: parseFloat(vertextChildren[2].nodeValue), spatialReference: { wkid: 32632 } }) esriP = projection.project(esriP, getSpatialRefOut()); var pp = [esriP.__accessor__.store._values.x, esriP.__accessor__.store._values.y, esriP.__accessor__.store._values.z]; polyObj.pushPath(pp); } var polygon = { type: "polygon", rings: polyObj.path, spatialReference: { wkid: getWkid() } }; var fillSymbol = { type: "simple-fill", color: [227, 139, 79, 0.8], outline: { color: [255, 255, 255], width: 1 } }; polygraphic = new Graphic({ geometry: polygon, symbol: fillSymbol, }); graphicsLayer.add(polygraphic); console.log(polyObj); }); var pointerino = { type: "point", // autocasts as new Point() x: 990380.32666306, y: 6993081.901957256, z: 12, spatialReference: { wkid: 102100 } }; var markerSymbol = { type: "simple-marker", // autocasts as new SimpleMarkerSymbol() color: [226, 119, 40], outline: { // autocasts as new SimpleLineSymbol() color: [255, 255, 255], width: 2 } }; var pointGraphic = new Graphic({ geometry: pointerino, symbol: markerSymbol }); console.log(pointGraphic); graphicsLayer.add(pointGraphic); }); }) }; function getWkid() { var wkid = view.spatialReference.__accessor__.store._values.wkid; return (wkid); } function getSpatialRefOut() { var spatialOut = view.spatialReference; return spatialOut; }