Bilag 1.16 LandXML

<< Click to Display Table of Contents >>

Navigation:  Bilag 1 - Punktkataloger >

Bilag 1.16 LandXML

53

 

Moduler:        LANDIND, LANDUD, KLISTE

 

Ved import af LandXML understøttes pt. kun Leica's HeXML samt Trimbles brug af formatet.

I toppen af hver LandXML-fil er række metadata-informationer, herunder LandXML udgave, produkt der har dannet XML-filen, firmaoplysninger mm.

 

Hidtil har det været almen praksis at bruge linjekoder, for at markere hvor en linje starter og slutter. LandInd programmet giver mulighed for fortsat at bruge dette i LandXML formatet. Nedenstående linjer (fra Linjekoder.xml) viser et simpelt eksempel.

 

Selve punktopmålingen startes med taggen "<CgPoints>".

Opstillingen er herefter som følger: punktnummer (name), ObjektID (oID, typisk det samme som punktnr.), punktkode (code), beskrivelse (desc), status (role), Tid (timeStamp), Y, X og Z

Hvert punkt defineres af en ny "<CgPoints>".

 

Eksempel - (udsnit):

 

<?xml version="1.0" encoding="utf-8"?>

<LandXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.landxml.org/schema/LandXML-1.2 http://www.landxml.org/schema/LandXML-1.2/LandXML-1.2.xsd" version="1,2" language="English" xmlns="http://www.landxml.org/schema/LandXML-1.2">

 <Units>

   <Metric linearUnit="meter" areaUnit="squareMeter" volumeUnit="cubicMeter" angularUnit="grads" />

 </Units>

 <CgPoints>

   <CgPoint name="104" code="8121.9" desc="">1005.243 93.713 8.526</CgPoint>

   <CgPoint name="103" code="8121.1" desc="">1009.411 95.336 8.519</CgPoint>

   <CgPoint name="102" code="8121.1" desc="">1047.927 94.526 8.519</CgPoint>

   <CgPoint name="101" code="8121.1" desc="">1054.897 95.280 8.326</CgPoint>

   <CgPoint name="100" code="8121.1" desc="">1060.573 97.534 8.134</CgPoint>

 </CgPoints>

</LandXML>

 

Et andet eksempel er vist nedenfor:

 

<CgPoints>

<CgPoint name="10003" oID="10003" code="0110" desc="Samlebrønd" role="measured" timeStamp="2014-03-24T10:39:12">1099.987684 100.000000 7.129659</CgPoint>

<CgPoint name="10002" oID="10002" code="10" desc="Ledning - Grav" role="measured" timeStamp="2014-03-24T10:38:37">1099.987687 100.000400 5.129819</CgPoint>

<CgPoint name="10001" oID="10001" code="10" desc="Ledning - Grav" role="measured" timeStamp="2014-03-24T10:38:03">1050.000000 100.000200 6.700107</CgPoint>

<CgPoint name="10000" oID="10000" code="0110" desc="Samlebrønd" role="measured" timeStamp="2014-03-24T10:37:06">1050.000000 100.000100 8.700187</CgPoint>

<CgPoint name="9999@3" oID="9999" code="41" desc="Opstilling" timeStamp="2014-03-24T10:29:46">1000.000000 100.000000 10.000000</CgPoint>

<CgPoint name="1" oID="1" role="measured" timeStamp="2014-03-24T10:29:46"></CgPoint>

<CgPoint name="9999" oID="9999" code="41" desc="Opstilling" role="control point" timeStamp="2014-03-24T10:29:41">1000.000000 100.000000 10.000000</CgPoint>

</CgPoints>

 

Dette eksempel indeholder 2 opstillingspunkter (desc=”Opstilling”) som man normalt ikke vil have indlæst. Disse punkter kan sorteres fra vha. indstillingerne i LIFAland (Setup -> LANDIND indstillinger):

Bilag1.16_LandXML__filter_indstillinger

Her er det valgt at kun punkter, hvor attributten ”role” er lig med ”mesured” bliver indlæst.

 

 

Gennem LandXML formatet er den mest gængse måde at angive linje- og kurveforløb gennem PlanFeatures. En LandXML fil er normalt bygget af et afsnit med CgPoints (de målte punkter) efterfulgt af et afsnit med PlanFeatures. Et eksempel på en PlanFeature er vist nedenfor (fra eksemplet Opmaaling_med_Viva_instrument.xml):

 

<PlanFeature name="Line_5">

<CoordGeom>

<Line oID="Line_5_0001">

<Start pntRef="Pt_221">6174941.144504 679247.273018 26.807000</Start>

<End pntRef="Pt_222">6174942.905009 679245.963989 26.643000</End>

</Line>

<Line oID="Line_5_0002">

<Start pntRef="Pt_222">6174942.905009 679245.963989 26.643000</Start>

<End pntRef="Pt_223">6174944.363523 679245.012995 26.661000</End>

</Line>

<Line oID="Line_5_0003">

<Start pntRef="Pt_223">6174944.363523 679245.012995 26.661000</Start>

<End pntRef="Pt_224">6174945.780418 679243.929797 26.762000</End>

</Line>

<Line oID="Line_5_0004">

<Start pntRef="Pt_224">6174945.780418 679243.929797 26.762000</Start>

<End pntRef="Pt_225">6174947.112190 679242.841278 26.959000</End>

</Line>

<Line oID="Line_5_0005">

<Start pntRef="Pt_225">6174947.112190 679242.841278 26.959000</Start>

<End pntRef="Pt_226">6174948.950633 679241.477699 27.163000</End>

</Line>

<Line oID="Line_5_0006">

<Start pntRef="Pt_226">6174948.950633 679241.477699 27.163000</Start>

<End pntRef="Pt_227">6174950.745752 679239.844921 27.332000</End>

</Line>

</CoordGeom>

</PlanFeature>

 

Indeni PlanFeature findes afsnittet CoordGeom, der beskriver geometrien, og det indeholder et eller flere afsnit med ”Line”, ”Curve” (cirkelbue), ”IrregularLine” (specielt kurveforløb) og / eller ”Chain”. I disse afsnit vil ”pntRef” referere til punkterne i CgPoints afsnittet.

I LandXML filer fra Leica instrumenter vil der nu som regel følge et afsnit med titlen ”HexagonLandXML”. Første del af dette afsnit indeholder lidt ekstra information omkring de enkelte punkter. Nederst i filen vil der typisk være et afsnit med ekstra information vedr. de enkelte planfeatures.

 

På lidt ældre instrumenter (f.eks. Viva) kan man angive en række attributter for hver enkelt PlanFeature. Se udsnittet nedenfor fra Opmaaling_med_Viva_instrument.xml:

 

<PlanFeature name="Line_5" lineColor="0x00000000" lineStyle="Dot" lineWidth="25">

<LineCode code="Underføring" codeDesc="underføring" color="0x00000000" style="Dot" codeGroup="Fiberanlæg">

<Attribute name="Etabl metode" value="Uden foring"/>

<Attribute name="Bemærkning01" value="styret underborg"/>

</LineCode>

<CoordGeom>

</CoordGeom>

</PlanFeature>

 

Her er der angivet to attributter: ”Etabl metode” og ”Bemærkning01”.

 

Dette er IKKE muligt i de nyeste Leica instrumenter (Captivate). På disse instrumenter er det kun muligt at sætte attributter på punkter (se eksempel nedenfor). LandInd vil så læse attributterne fra det første punkt på f.eks. en linje og sætte dem på linjen. Udsnittet nedenfor er fra Opmaaling_med_Captivate_instrument.xml

 

<Point uniqueID="17" class="measured" subclass="GPS phase" lineworkFlag="C" averageUsage="true" applicationNumber="2">

<Coordinates originalCoordSysKind="Ellipsoidal" originalGeodeticDatumKind="WGS84" originalHeightKind="ellipsoidal">

<WGS84>

<Cartesian x="3570284.552740" y="655250.687323" z="5226936.610114"/>

<Geodetic lat="55.401534147434383" lon="10.399702726146431" hghtE="50.751486" hghthO="11.373392"/>

</WGS84>

<Local>

<Cartesian x="3570362.748131" y="655344.527317" z="5227046.017076"/>

<Geodetic lat="55.402166317902179" lon="10.400936761458802" hghtE="4.943171" hghthO="11.373392"/>

<Grid e="-208461.735870" n="107760.936697" hghtE="4.943171" hghthO="11.373392"/>

</Local>

</Coordinates>

<PointCode code="707" codeDesc="Jordfortrængning" codeInformation="0.50" color="0x0000FFBF" codeGroup="Fibia_Lifa_ATT" codeLinework="open line">

<Attribute name="Diameter" value="Ø50-Ø90" id="1"/>

<Attribute name="Livscyklus" value="I drift" id="2"/>

<Attribute name="Opm_metode" value="Afmærkning" id="3"/>

</PointCode>

<PointQuality Qxx="0.0000147090" Qxy="-0.0000000899" Qxz="0.0000032528" Qyy="0.0000093057" Qyz="0.0000026302" Qzz="0.0000794640" MeanError="1.000000" CQ3D="0.010172" CQPos="0.004900" CQHeight="0.008914"/>

</Point>

 

Som vist i udsnittet ovenfor vil attributten ”code” normalt indeholde en kode svarende til en surveykode fra featuretabellen og ”codeDesc” vil indeholde en beskrivende tekst. På den baggrund vil programmet placere punktet på det tilhørende lag og de vil få den farve og linjetype, der svarer dertil.

 

På samme måde som ”code” attributten på punkterne kan styre hvilket lag, et givet punkt bliver placeret på, så kan navnet på en planfeature styre hvilket lag, en given planfeature bliver placeret på. Det er vist i eksemplet ”Surveykode_på_punkter_og_planfeatures.xml”. Et udsnit er vist nedenfor:

 

<CgPoint name="59" oID="59" code="320" desc="Autoværn" role="measured" timeStamp="2016-03-21T08:59:54.06">-11.043739 -3.035982 -1.344514</CgPoint>

<CgPoint name="58" oID="58" code="320" desc="Autoværn" role="measured" timeStamp="2016-03-21T08:59:33.06">-8.794505 -2.521789 -1.362518</CgPoint>

<CgPoint name="57" oID="57" code="320" desc="Autoværn" role="measured" timeStamp="2016-03-21T08:59:30.00">-7.906897 -2.631344 -1.400216</CgPoint>

<CgPoint name="56" oID="56" code="320" desc="Autoværn" role="measured" timeStamp="2016-03-21T08:59:24.04">-7.522348 -3.438824 -1.505571</CgPoint>

<CgPoint name="55" oID="55" code="320" desc="Autoværn" role="measured" timeStamp="2016-03-21T08:59:08.09">-6.750279 -6.497222 -1.568460</CgPoint>

</CgPoints>

<PlanFeatures>

<PlanFeature name="320_002">

<CoordGeom>

<Line oID="320_002_0001">

<Start pntRef="55">-6.750279 -6.497222 -1.568460</Start>

<End pntRef="56">-7.522348 -3.438824 -1.505571</End>

</Line>

<Curve length="1.866039" rot="cw" oID="320_002_0002">

<Start pntRef="56">-7.522348 -3.438824 -1.505571</Start>

<Center>-8.450553 -3.385558</Center>

<End pntRef="58">-8.794505 -2.521789 -1.362518</End>

</Curve>

<Line oID="320_002_0003">

<Start pntRef="58">-8.794505 -2.521789 -1.362518</Start>

<End pntRef="59">-11.043739 -3.035982 -1.344514</End>

</Line>

</CoordGeom>

</PlanFeature>

 

Programmet vil checke om navnet på den pågældende planfeature indeholder en underscore. Hvis dette er tilfældet, vil programmet så undersøge om den første del er en surveykode. Hvis dette er tilfældet vil programmet placere elementet på det lag, der svarer dertil, og elementet vil få den linjetype og farve, der svarer dertil. Nummeret efter underscore er et fortløbende nummer, der også bliver brugt som den første del af den ”oID” (objektID), der bliver brugt til at identificere de enkelte dele, som den pågældende planfeature kan bestå af.

Hvis den første del af navnet ikke kan genkendes som en surveykode, vil programmet bruge attributten ”code” hvis denne er angivet. Et eksempel på dette ses i eksemplet ” Planfeatures_med_code_attribut.xml” og nedenfor er vist et lille udsnit:

 

<PlanFeature name="BBTeknikhus 3" code="BBTeknikhus" codeGroup="Fiberanlæg">

     <CoordGeom>

       <Line>

         <Start pntRef="L3P1">6188474.5809 553176.1463 34.1489000000001</Start>

         <End pntRef="L3P2">6188474.4573 553175.1555 34.1643999999942</End>

       </Line>

       <Line>

         <Start pntRef="L3P2">6188474.4573 553175.1555 34.1643999999942</Start>

         <End pntRef="L3P3">6188475.2989 553175.0431 34.167300000001</End>

       </Line>

       <Line>

         <Start pntRef="L3P3">6188475.2989 553175.0431 34.167300000001</Start>

         <End pntRef="L3P4">6188475.5337 553176.0687 34.1579000000056</End>

       </Line>

     </CoordGeom>

   </PlanFeature>

 

Programmet vil i dette tilfælde placere elementet på laget ”BBTeknikhus”. Elementet vil dog ikke skifte farve / linjetype.

 

 

 

Attributter på punkter og planfeatures

 

Indstillingerne i LIFAland (Setup -> LANDIND indstillinger) er afgørende for hvordan attributterne fra LandXML filerne bliver gemt:

Bilag1.16_LandXML_attributter_indstillinger

 

Man kan som bruger vælge mellem at få attributterne påsat som tags (item types i MicroStation Connect) eller som databaselinks. Hvad der sker i programmet, forklares bedst med et eksempel fra ”Opmaaling_med_Captivate_instrument”:

 

<PointCode code="707" codeDesc="Jordfortrængning" codeInformation="0.50" color="0x0000FFBF" codeGroup="Fibia_Lifa_ATT" codeLinework="open line">

<Attribute name="Diameter" value="Ø50-Ø90" id="1"/>

<Attribute name="Livscyklus" value="I drift" id="2"/>

<Attribute name="Opm_metode" value="Afmærkning" id="3"/>

</PointCode>

 

Hvis man som bruger har valgt at tilknytte attributterne som tags, vil programmet oprette et tagset med et navn svarende til ”codeDesc” – i dette tilfælde ”Jordfortrængning” – og indeholdende ”Diameter”, ”Livscyklus” og ”Opm_metode”.

Hvis man ønsker at få attributterne tilknyttet som databaselinks, er man nødt til at tilrette tabellen ”LifalandXML”. Et lille udsnit er vist herunder:

 

Bilag1.16_LandXML_attributter_databaselinks01

Bilag1.16_LandXML_attributter_databaselinks02

 

 

Øverste linje i dette udsnit angiver at attributten ”Diameter” fra ”PointCode” med navnet ”707”, der er en del af ”codeGroup” ”Fibia_Lifa_ATT” vil bliver placeret i kolonnen ”Type_og_dim” i tabellen EHA_Test. Det bør dog KRAFTIGT tilrådes at man bruger den attributtabel, der er angivet i featuretabellen.