Tekstiformaatti

Tekstiformaatilla voidaan lukea ja kirjoittaa tekstipohjaisia tiedostoformaatteja, jotka perustuvat peräkkäisiin pistetietoihin. Yksi pistetieto on useimmiten yksi tekstirivi, mutta voi olla myös jaettuna useammalle riville. Olennaista on, että jokainen pistetieto on rakenteeltaan samanlainen.

Vektoriaineistojen lisäksi voidaan muuntimella lukea ja kirjoittaa myös kairauspisteitä ja niiden ominaisuuksia, mutta ei yksittäsiä syvyyshavaintoja.

Tekstiformaatin alkutiedosto voi sisältää makroja ja tiedoston ominaisuustietoja. Koska viivojen koodaus perustuu viivanumeroihin, peräkkäisistä samannumeroisista viivoista jälkimmäisen T2-kenttään lisätään loppuun merkki X.

Määrittely kirjoitetaan isoon tekstikenttään ja sen yläpuolella näytetään esimerkkimuotoilu, jossa kunkin ominaisuuden arvona on sen järjestysnumero. Koordinaateille X, Y ja Z näytetään vakio reaalilukuarvo. Formaattimäärittely voidaan jakaa useammalle riville, mutta mahdolliset välilyönnit kenttien välillä on muistettava jättää määrittelyyn rivin loppuun.

Otsikkorivi

Kirjoittaa kenttien tunnukset otsikkoriville tai luettaessa ohittaa ensimmäisen rivin.

Jos kooditiedosto on annettu, koodikenttien nimet haetaan sieltä ja tunnetuille laskentaominaisuuksille käytetään ohjelman omia nimiä. Koska kooditiedostossa olevat ominaisuuksien nimet ovat koodikohtaisia, niitä ei käytetä yleisellä otsikkorivillä.

Pilkku desimaalierottimena

Käyttää kirjoittaessa pilkkua desimaalierottimena. Luettaessa desimaalierottimena ymmärretään sekä pilkku että piste.

Kirjoita tekstit

Kirjoittaa myös tekstipisteet samassa muodossa kuin muutkin pisteet. Itse teksti löytyy ominaisuudesta TEXT.

Ilman koordinaatteja

Sallii pisteiden lukemisen vaikkei pisteillä olisi koordinaattitietoa. Pisteille pakotetaan X- ja Y-koordinaatiksi 0, jos koordinaatteja ei voitu lukea tiedostosta.

Ominaisuudet

Lukee ja kirjoittaa ominaisuudet kohteen jälkeen omille riveilleen. Kaikki pisteiden ja viivojen ominaisuudet, jotka eivät ole varsinaisessa määrittelyssä kirjoitetaan. Viivapisteiden ominaisuuksia ei kirjoiteta. Ominaisuusrivi alkaa huutomerkillä ja sisältää ominaisuudet tunnuksen ja arvon yhtäsuuruusmerkillä erotettuna (esim. !ATTR=123). Ominaisuudet tulkataan takaisin vain, jos tämä Ominaisuudet-asetus on päällä lukumuuntimessa.

Kaikki poikkileikkaukset

Kirjoittaa kaikki poikkileikkaukset. Oletuksena kirjoitetaan vain näkyvä poikkileikkaus.

Kirjoita viivat

Lukee ja kirjoittaa vain viivat. Koordinaatit X, Y ja Z viittaavat tällöin viivan tai alueen referenssipisteen koordinaatteihin. Ominaisuuksina luetaan ja kirjoitetaan vain viivan ominaisuudet. Viivan pisteet voidaan lukea ja kirjoittaa kohdassa Viivat selitetyllä hakasulkusyntaksilla.

Lue väripisteinä

Lukee pisteet väripisteinä, jotka piirretään vakiokokoisina värillisinä ruutuina. Väri siirretään pisteen piirtotiedoksi #COLOR-makrolla ja oletuskoko lasketaan keskimääräisen pistetiheyden perusteella. Koko tai sen kerroin voidaan antaa myös kenttäasetusten SymbolSize-asetuksella.

Jätä kaarien keskipisteet

Jos tämä asetus on päällä kun kirjoitetaan kaaria, niin kaaria ei muuteta kolmen pisteen kaariksi.

Otantaväli

Yksinkertainen testisuodatus, jolla voidaan tiedostosta lukea pisteitä annetuin välein. Vaikuttaa vasta lopuksi luokkien ja koordinaattirajojen suodattamisen jälkeen.

Viivasuodatus

Viivasuodatuksessa voidaan antaa viivoja sisältävä vektoritiedosto ja hakuetäisyys viivoista. Hakuetäisyys laitetaan ylempään kenttään ja alempaan haetaan viivatiedosto, jonka on oltava 3D-binäärimuodossa. Suodatus tarkistaa tiedoston kaikki viivat. Jos viiva on sulkeutuva alue, sisäpuolelle jäävät pisteet hyväksytään. Muussa tapauksessa hyväksytään pisteen annetun hakuetäisyyden päässä viivasta.

Näytä

Näyttää esimerkkirivin tekstieditorissa seuraavassa muodossa:

      T3      T4             X             Y         Z
   Koodi  Tunnus             X             Y         Z
       1       2     12345.678     12345.678    12.345

123456789012345678901234567890123456789012345678901234567890
         1         2         3         4         5         6

Ensimmäinen otsikkorivi käyttää ominaisuuksien tunnuksia ja toinen nimiä. Varsinainen esimerkkirivi on kolmantena. Kaksi alinta riviä näyttävät sarakelaskurin.

Editoi

Avaa formaatin määrittelyn editoitavassa valintalistassa. Jokainen tietue näytetään omalla rivillään ja niitä voidaan editoida esitysmuodon editoinnilla.

Formaatin määrittely

Tekstiformaatti perustuu peräkkäisiin tietuemäärittelyihin, joista jokainen määrittelee yhden tiedon (ominaisuus, koordinaatti) formaatin ja sijainnin. Peräkkäiset tietuemäärittelyt erotetaan toisistaan joko välilyönnillä tai muulla erotinmerkillä. Pääsääntöisesti sama formaattimäärittely toimii sekä lukemisessa että kirjoittamisessa. Käytännössä tämä vaatii, että kirjoitettavat tietueet on eroteltu jotenkin järkevästi.

Esimerkiksi perinteinen Geonic-formaatti:

       9       0     234    3199   6697091.114   3444140.918        11.545

käsitellään seuraavalla formaattimäärittelyllä:

$T1@8< $T2@8< $T3@8< $T4@8< $X%.3@14 $Y%.3@14 $Z%.3@14

Edellisessä määritellään formaatti neljällä koodikentällä (T1-T4), kukin katkaistuna kahdeksan merkin levyisiin kenttiin ja sen jälkeen koordinaatit X, Y ja Z 14 merkin levyissä kentissä kolmella desimaalilla.

Formaatti osaa asteiden, minuuttien ja sekunttien käsittelyn. Pisteiden X- ja Y-koordinaatteina olevia asteita voidaan lukea ja kirjoittaa eri muodoissa ja eri yksiköihin jaettuna. Tämä toimii yhdessä koordinaattimunnoksen kanssa mahdollistaen maantieteellisten koordinaattien lukemisen ja kirjoittamisen automatisoinnin. Lisäksi tekstiformaatilla voi lukea ja kirjoittaa myös kairaus- sekä profiilipisteitä.

Tietuemäärittely

Yksittäisen tietueen määrittely koostuu seuraavista osista:

$NAME@WIDTH=FILL%FORMAT.DEC

$  NAME     koodin/ominaisuuden/koordinaatin nimi (T1, MAT, X).
%  FORMAT   aste/minuutti/sekuntti formaattimäärittely.
  .  DEC    desimaalien määrä, oletus muuntimen asetuksista.
@  WIDTH    kentän leveys, negatiivinen asemoidaan vasemmalle.
  =  FILL   kentän täyttömerkki, oletuksena välilyönti.

Ominaisuuden määre $ voidaan korvata määreellä £ jolloin viiva- tai profiilipisteen ominaisuutta haetaan kirjoitettaessa myös viivalta tai profiililta mikäli sitä ei itse pisteeltä löydy. Luettaessa määrellä £ merkitty ominaisuus vastaavasti sijoitetaan viivalle tai profiilille. Hajapisteiden kanssa £ toimii täsmälleen samalla tavalla kuin $.

Täyttömäärittely (FILL) katsotaan leveysmäärittelyn (WIDTH) lisämääreeksi ja desimaalien määrä (DEC) formaatin (FORMAT) lisämääreeksi. Lisäksi tietuemäärittelyn perässä voi olla erikoismerkkejä tiedon katkaisuun ja erotinmerkkeihin liittyen. Tietue voi myös olla lainaus- tai heittomerkeillä rajattu vakioteksti.

Tietueen nimi (NAME) voi olla joko koodikentän nimi (T1-T6), mikä tahansa ominaisuuden nimi (MAT, DATE, TIME) tai jokin seuraavista koordinaateista:

X, Y, Z  Pisteen X, Y tai Z-koordinaatti.
A, B     Kaira- tai profiilipisteen paaluluku (A) tai sivumitta (B)
D, G, T  Pisteen suuntakulma asteina (D), gooneina (G) tai oletusyksikkönä (T)

Jos kirjoitusmuuntimen koordinaattiasetuksissa on määritelty mikä tahansa koordinaattimuunnos, alkuperäiset koordinaatit kopioidaan ominaisuuksiin _X, _Y ja _Z. Näin voidaan samalle riville kirjoittaa koordinaatit kahdessa eri järjestelmässä:

$T4@8< $_X%.3@14 $_Y%.3@14 $X%.3@14 $Y%.3@14

Lisäksi nimenä voidaan käyttää nollaa (0) merkitsemään tyhjää ominaisuutta. Kirjoitettaessa se tulostaa nollan ja lukiessa arvo yksinkertaisesti ohitetaan. Esimerkiksi pelkkien koordinaattien luku Geonic-formaatista:

$0@8 $0@8 $0@8 $0@8 X%.3@14 Y%.3@14 Z%.3@14

Lukuarvojen muotoilu

Formaattimäärittely (FORMAT) ja desimaaliosio (DEC) annetaan yleisillä muotoilusäännöillä.

Esimerkkejä:

X@14%.3             123456.789      Kirjoitus kolmella desimaalilla
X@14%+.3           +123456.789      Etumerkki myös positiivisille arvoille
X@14%.-2                123500      Pyöristys negatiivisilla desimaaleilla
$SCALE%.               123.456      Numeerinen ominaisuus oletusdesimaaleilla
$MISSING%.0                  0      Puuttuva numeerinen ominaisuus nollana
$MISSING%_.0                        Puuttuva numeerinen ominaisuus tyhjänä
X@14%ddmm.3              0103.456   Asteosa ja minuutit desimaaleilla (NMEA)
X@14%d°m^'s^".3        1°3'5.678"   Erottimina °, ' ja "
$VALUE%.1"m"                1.2m    Yksikkö arvon perässä
$VALUE%.1"value=&"     value=1.2    Otsikko ennen arvoa
$VALUE%.1"'&'"             '1.2'    Arvo heittomerkeissä
$VALUE%.1'"&"'             "1.2"    Arvo lainausmerkeissä

Kenttien leveys

Tietueen leveys (WIDTH) määrittelee kirjoitettavan kentän leveyden ja valinnainen lisämääre täyttömerkin (FILL) mahdollistaa kentän täytön jollain muulla kuin välilyönnillä. Negatiivinen leveys asemoi tiedon kentän vasempaan laitaan. Muutoin käytetään oletuksena asemointia oikealle.

Jos leveysmäärittely jätetään pois, kirjoitetaan tieto suoraan sen levyisenä kuin se on. Jos tieto on leveämpi kuin kentän leveysmäärittely, se kirjoitetaan koko leveydellään. Tietuemäärittely lopussa olevilla erikoismerkeillä < ja > voidaan pitkä tietue haluttaessa katkaista lopusta (<) tai alusta (>).

Esimerkkejä:

$T4@8               123             Asemointi oikealle, täyttö välilyönneillä
$T4@-8=0       12300000             Asemointi vasemmallle, täyttö nollilla
X@14=.         ....123456.789       Asemointi oikealle, täyttö pisteillä
$PATH@14       c:/foo/bar/bat.txt   Pitkä tieto kirjoittuu kentän yli
$PATH@14>      oo/bar/bat.txt       Pitkä tieto katkaistuna alusta
$PATH@14<      c:/foo/bar/bat       Pitkä tieto katkaistuna lopusta
$0%.1@8             0.0             Tyhjä ominaisuus yhdellä desimaalilla
£LENGTH%.2@8       0.00             Viivan ominaisuus kahdella desimaalilla

Lainaukset

Vakiotekstien käsittelyä varten tietue voi myös olla lainaus- tai heittomerkeillä rajattu vakioteksti. Kirjoitettaessa tämä kirjoitetaan suoraan ja luettaessa ohitetaan sen leveyden verran merkkejä. Jos tietue alkaa lainausmerkillä se voi sisältää heittomerkkejä ja päinvastoin.

Jos lainaus- tai heittomerkkien sisällä on normaali $-merkillä alkava tietuemäärittely, se kirjoitetaan lainattuna ja luetaan lainauksen sisältä. Kaikkia normaaleja datamäärittelyjä voidaan käyttää myös lainausten kanssa. Huomattava on, että leveään kenttään tekstiä asemoidessa täyttömerkit tulevat lainausten ulkopuolelle.

Esimerkkejä:

"foobar"         foobar             Vakiotekstin kirjoitus
"'foobar'"       'foobar'           Vakioteksti sisältää heittomerkkejä
'"foobar"'       "foobar"           Vakioteksti sisältää lainausmerkkejä
"$T4"            "123"              Koodikenttä lainausmerkeissä
'$X@14'            '697295.748'     Koordinaatti heittomerkeissä

Erotinmerkit

Erotinmerkkeinä tietueiden välillä voidaan oletuksena käyttää välilyöntiä, tabulointia, pilkkua, puolipistettä, pystyviivaa ja &-merkkiä. Tabulaattori annetaan määrittelyssä ~-merkillä. Tyhjänä erottimena toimivaa &-merkkiä ei koskaan kirjoiteta tiedostoon eli se mahdollistaa tietueiden kirjoittamisen kiinni toisiinsa. Jos tietueelle on määrätty leveys, ei erottimena käytettyä välilyöntiä kirjoiteta. Muut erottimet kirjoitetaan, vaikka leveys olisikin annettu. Pystyviiva toimii rivinvaihtona mahdollistaen tietueiden kirjoittamisen eri riveille.

Esimerkkejä:

$T4@6 Z@10         1234    12.345   Vakiolevyiset kentät
$T4,Z            1234,12.345        Pilkulla erotetut kentät
$T4@6,Z@10        1234,    12.345   Vakiolevyiset pilkulla erotetut kentät
$T4&Z            123412.345         Yhteen kirjoitetut kentät
$T4|Z            1234               Monirivisen formaatin ensimmäinen rivi
                 12.345             Monirivisen formaatin toinen rivi
T1~T2~T3         12  34  56         Koodikentät tabuloinnilla erotettuna
"KP"&T4          KP123              Vakioteksti kiinni ominaisuudessa

Päivämäärä ja kellonaika

Ominaisuuksiin talletettuja päivämääriä tai kellonaikoja voidaan myös lukea ja kirjoittaa eri muodoissa. Formaatti määritellään merkeillä Y, YY, YYYY (vuosi), M, MM (kuukausi), D, DD (päivä), h, hh (tunti), m, mm (minuutti), s, ss (sekuntti) ja vapaavalintaisilla erotinmerkeillä näiden välissä. Kahdella merkillä annettu vuosi (YY) ilmoitetaan kahdella numerolla (09). Muut arvot kahdella merkillä täytetään nollilla vasemmalta (01:03:05). Sekunnnit voidaan myös näyttää desimaaleilla (.2). Kirjoitettavan päivämäärän on oltava ominaisuudessa muodossa 12.7.2009 (D.M.YYYY) ja kellonajan muodossa 12:34:56 (hh:mm:ss).

Esimerkkejä:

$DATE%D.M.YYYY          12.7.2009   3D-Win ominaisuuksien päivämäärän muoto
$TIME%hh:mm:ss           12:34:56   3D-Win ominaisuuksien kellonajan muoto
$DATE%YYYY-MM-DD       2009-07-12   ISO 8601 standardin mukainen päivämäärä
$TIME%hh:mm:ss.2      12:34:56.78   Sekunnit kahdella desimaalilla
$DATE%DDMMYY               120709   Vuosi kahdella numerolla

Värit

RGB väriarvoja voidaan lukea ja kirjoittaa formatointimääreillä R (punainen), G (vihreä), B (sininen) ja A (läpinäkyvyys). Yksittäinen kirjain tarkoittaa värikomponenttia normaalina kokonaislukuna ja kaksi peräkkäistä kirjainta komponenttia 16-järjestelmässä. Välilyönti erottimena voidaan antaa alaviivalla (_).

Esimerkkejä:

$COLOR%RRGGBB              FF0000   Punainen väri 3D-Win oletusmuodossa
$COLOR%RRGGBBAA          FF0000FF   Punainen väri läpinäkyvyyden kanssa
$COLOR%R_G_B              255 0 0   Punainen väri erillisinä komponentteina
$COLOR%C                      192   Harmaasävyarvo

Huomaa että ominaisuus $COLOR on tässä vain esimerkkinä. Sitä ei käytetä kohteiden piirtoon. Piirto käyttää piirtotietoa, jota käsitellään makroilla alla.

Makrot

Kirjoitettaessa voidaan käyttää samoja makroja kuin pisteryhmässä ja ominaisuushaussa. Normaali #-määrittely kirjoittaa vain annetun makron. Lisämääreellä = voidaan kirjoittaa makron eteen sen tunnus ja yhtäsuuruusmerkki. Makrolla #NAME voidaan kirjoittaa kooditiedostosta haettu T3-kentän koodin selitys. Tämä vaatii kooditiedoston nimen yleisiin muunninasetuksiin.

Luettaessa voidaan käyttää piirtotietojen makroja (#COLOR, #SIZE, jne.).

Esimerkkejä:

#NAME                   Hajapiste   Koodin selitys kooditiedostosta
#=NAME             NAME=Hajapiste   Tunnus ja koodin selitys kooditiedostosta
#SLOPE@8%.4               -0.1224   Viivan kaltevuus neljällä desimaalilla
#COUNT                         12   Viivan pisteiden määrä
#COLOR%R_G_B              255 0 0   Piirtotiedon väri erillisinä komponentteina

Ominaisuudet

Normaali $-määrittely kirjoittaa vain annetun ominaisuuden. Lisämääreellä = voidaan kirjoittaa ominaisuuden eteen sen tunnus ja yhtäsuuruusmerkki. Lisäksi käyttämällä merkkiä * ominaisuuden nimenä voidaan kirjoittaa kaikki jäljellä olevat ominaisuudet. Jos merkin * jälkeen ei ole annettu erotinmerkkiä, käytetään ominaisuuksien välillä edellistä erotinmerkkiä.

Luettaessa ominaisuus takaisin =-merkin kanssa siinä mahdollisesti oleva tunnus poistetaan. Kun luetaan kaikki ominaisuudet määrittelyllä $=*, luetaan tietueita tunnuksineen niin kauan kuin niistä löytyy yhtäsuuruusmerkki. Määrittelyllä $* kirjoitettuja ominaisuuksien arvoja ei voida enää lukea takaisin samalla määrittelyllä.

Määrittelyllä $# voidaan kirjoitettaessa hakea kooditiedostosta ominaisuuden tosiarvo. Esimerkiksi määrittely $#T3 hakee koodin selityksen ja määrittely $#MAT materiaalin nimen. Tämä vaatii kooditiedoston nimen yleisiin muunninasetuksiin.

Esimerkkejä:

$T1                             9   Kentän T1 arvo
$=T1                         T1=9   Kentän T1 tunnus ja arvo
$*                        1 2 3 4   Kaikkien ominaisuuksien arvot
$#T3                    Hajapiste   Koodin selitys kooditiedostosta
$=*           T1=1 T2=2 T3=3 T4=4   Kaikkien ominaisuuksien tunnukset ja arvot
$T3,$=*          3,T1=1,T2=2,T4=4   Koodi ja kaikki loput ominaisuudet
$T3,'$=*'  3,T1='1',T2='2',T4='4'   Koodi ja loput ominaisuudet lainattuna

Viivat

Viivan pisteet voidaan kirjoittaa määrittelyn lopussa hakasuluissa olevalla toisto-osuudella. Hakasulkujen sisään kirjoitetaan yksittäisen viivapisteen kirjoitusmäärittely normaalien sääntöjen mukaan. Jos ennen hakasulkujen loppua ei ole annettu erotinmerkkiä, käytetään toistojen välillä edellistä erotinmerkkiä. Tätä kopioitua erotinmerkkiä ei kirjoiteta viimeisen toiston jälkeen.

Esimerkkejä:

$T2 [X.1 Y.1 Z.1]    2 12.3 67.7 1.2 98.7 54.3 3.4   Viivanumero ja koordinaatit
$T1,$T2,$T3,[X.1,Y.1]    1,2,3,12.3,67.7,98.7,54.3   Pinta, viiva, koodi ja koordinaatit
$T2 [$T4 X.1 Y.1]        2 1 12.3 67.7 2 98.7 54.3   Viiva, koordinaatit ja pistenumero
$=* [X.1 Y.1]        T1=1 T2=2 12.3 67.7 98.7 54.3   Ominaisuudet ja koordinaatit
$T2 $=* [X.1,Y.1 ]      2 T1=1 12.3,67.7 98.7,54.3   Ominaisuudet ja koordinaatit

Muuta

Kommenttimerkillä (!) alkavat rivit ohitetaan aina luettaessa. Kommenttirivejä ei kuitenkaan hyväksytä monirivisissä formaateissa tietueiden välillä.

Taiteviivojen lukeminen perustuu viivanumeron (kenttä T2) sisältöön. Jos kentän sisältö on tyhjä tai nolla, piste luetaan hajapisteenä. Muutoin pisteet lisätään lukujärjestyksessä viivaan ja uusi viiva aloitetaan, kun viivanumero (T2) tai koodi (T3) vaihtuu.


Erikoisasetukset

Muuntimeen liittyy erikoisasetuksia.

Escapes, Separators, Quotes, Comment

Neljä merkkijonosarjaa, joissa luokitellaan tekstiformaatin erikoismerkit. Näiden avulla on tarvittaessa mahdollista lukea myös formaatteja, joissa näillä erikoismerkeillä on oma merkityksensä.

Escapes        Poistaa määrittelyn merkin erityismerkityksen, oletus "^\".
Separators     Tietueiden erotinmerkit määrittelyssä, oletus " ~,;|&".
Quotes	       Vakiotekstien rajat määrittelyssä, oletus " ja '.
Comment        Rivin alun kommenttimerkit tiedostossa, oletus ! ja #.

Huomaa, että Escapes ja Quotes asetukset vaikuttavat vain formaatin määrittelyyn. Itse data voi sisältää näitä merkkejä vapaasti. Separator-asetuksen merkit vaikuttavat sekä määrittelyssä että itse datassa ja Comment-asetuksen merkit ainoastaan datassa.

User

Lukuasetus Topcon-formaatia varten.

31 Topcon-aineiston luku. Muuntaa $-merkit välilyönneiksi ja lukee &-merkin jälkeen viivanumeron.

102$7006019.356$22484348.667$23.197$710$Type=400$Asennusvuosi=1998
103$7006019.213$22484348.557$23.182$715$Halkaisija=160$Type=P V  C$Asennusvuosi=1995&1@

Katso myös: Yleiset erikoisasetukset.