FYBA
Et lagringssystem for geodata på SOSI-format.
Sist oppdatert: 2013-10-09 av rosand
1 Innledning
FYBA er et rutinebibliotek for å kunne håndtere
SOSI-filer på en
mest mulig elegant måte, både mht. søking, lesing og oppdatering.
FYBA er nå tilpasset SOSI-format
versjon 4.0, og blir fortløpende tilpasset nye SOSI-versjoner.
Dene brukerveiledningen er laget for personell som er familiær med
SOSI og C-programmering.
Alle rutinegrensesnitt og konstanter er definert på filen FYBA.H.
Denne filen bør derfor inkluderes i alle filer som skal bruke FYBA-rutinene.
FYBA er skrevet i ANSI C, og kan i utgangspunktet kompileres på alle
platformer der det finnes en passende kompilator.
Det er imidlertid en del hjelperutiner som er maskin/operativsystem-avhengig.
Disse er skillt ut til et eget bibliotek (UT) som må tilpasses til
maskin/opperativsystem. Dette er testet under DOS, OS/2-16, OS/2-32, Win16, Win32, X64 og
div. UNIX varianter (POSIX, HPUX, Silicon graphics).
2 Oversikt over funksjonaliteten til FYBA
FYBA et rutinebibliotek som etablerer og vedlikeholder
egne "indeks-filer" (.IDX) med nødvendige opplysninger for
lesing,skriving,søk og manipulering av data på SOSI-filene.
Som en oversikt kan følgende figur forklare sammenhengen mellom
SOSI-filene ,biblioteket og brukerprogrammene.
!---------------!
!---------------->! Indeks-filer !<-------!
! !---------------! !
! ^ !
! ! !
! !---!-----! ! !-----------------!
! ! ! !-->! !
! ! Buffer ! ! !
!------!------! LC_Rxxxx ! ! LC_PutXxx ! Bruker-program !
! SOSI-fil(er)!<----------- ! internt !<------------- ! !
! ! ----------->! ! ! !
!-------------! LC_Wxxxx ! i ! ------------->! !
! ! LC_GetXxx ! !
! FYBA- ! ! !
! ! ! !
! rutinene! !-----------------!
! !
!---------!
3 Indeks-systemets oppbygning
Indeks-systemet er bygt opp av en hel rekke tabeller. Disse ligger
delevis i minnet, og delevis som filer på disken.
Nedenfor følger en tegning av aktuelle tabeller.
Dette bare til informasjon. Bruker behøver stort-sett ikke
kjenne til oppbygningen av disse:
Gruppetabell
Gruppetabell
Dette er hovedtabellen med informasjon om hver enkelt gruppe på SOSI-filen.
!------------------------------:-----------------------------------------------*
!Start !Start !Ant. !Ant. ! Gruppeinnhold !
! på ! i !tegn !tegn !-----------------------------------------------!
!SOSI- ! RB !GINFO- !PINFO- !Gruppe!ant. !ant. !Kvali- !Enhet ! Div. info !
!fil ! !buffer !buffer !navn !GINFO! NØ ! tet ! ! (bit def.) !
!-------!------!-------!-------!------!-----!-----!--------!------!------------!
!sosi_st!rb_st !ulGiLen!ulPiLen!gnavn !ngi !nko !Kvalitet!dEnhet! info !
! n64 ! n64 ! ul ! ul ! s ! s ! l ! struct ! d ! us !
! ! ! ! ! ! ! ! ! !0=i !
! ! ! ! ! ! ! ! ! !1=H !
! ! ! ! ! ! ! ! ! !2=KP !
! ! ! ! ! ! ! ! ! !3=REF !
! ! ! ! ! ! ! ! ! !4=REF med ØY!
! ! ! ! ! ! ! ! ! !5=sletta !
! ! ! ! ! ! ! ! ! !6=NGIS oppd !
*------------------------------------------------------------------------------*
Brukttabell
Merking av grupper
Denne tabellen brukes delevis internt av FYBA, og delevis av brukerprogrammet.
Følgende bit er definert:
-------------------------------------------------------------------------
31 Gruppen er funnet ved geografisk søk -----! Brukere kan lese/bruke
30 Gruppen er funnet ved GINFO-utvalg ! disse, men det er ikke
29 Gruppen er funnet ved serienummer-søk ! lov til å endre dem.
28 Gruppen er i ringbufferet !
27 Referanser er brukt i omskrevet blokk ------!
26 -----!
. ! Brukere har
. ! full tilgang
2 ! til disse.
1 -----!
0 Gruppen ligger i kø for skriving til SOSI-filen
SOSI-buffer
Binær kopi av SOSI-filen
For å øke hastigheten holder FYBA en binær kopi av SOSI-filen.
Denne kopien ligger delevis i minne og delevis på disk.
Denne kopien består av gruppeinformasjon, koordinater og punktinformasjon.
Gruppeinformasjonen for en gruppe handteres som en lang streng med pekere
til startposisjon for hver GINFO-linje.
!-----------:-----------:----------:----------------------------------!
! GINFO 1 ! GINFO 2 ! GINFO 3 ! ..... !
!-----------:-----------:----------:----------------------------------!
! ! !
!---------! ! !
! ! !
!--------! ! ! !
! GINFO ! ! ! !
!--------! ! ! !
! ofset !-! ! !
! !----- !
! !-----------------
Koordinatene lagres i egne array. Punktinformasjonen lagres som
en lang streng for hele gruppen med peker for hvert punkt til startposisjon
for PINFO for hvert punkt på samme måte som GINFO.
!--------! !--------! !--------:-------:--------!
! Øst ! ! Nord ! ! Høyde ! KP ! PINFO !
!--------! !--------! !--------!-------!--------!
! double ! ! double ! ! double ! short ! ushort !
! m ! ! m ! ! m ! ! ofset !
Serienummer-tabell
!-------------*
! Gruppenummer!
!-------------! Linjenummer i tabellen er serienummer.
! lGrNr !
! (long) !
*-------------*
Geografisk-søketabell
Geografisk søketabell
Geografisk søk er basert på omskrevet boks.
Boksene organiseres i et R-tre.
!-----------------------------------*
! Omskreven boks !
! !
! min-N ! min-Ø ! max-N ! max-Ø !
! ! ! ! !
!--------!--------!--------!--------!
!dMinNord!dMinAust!dMaxNord!dMaxAust!
! d ! d ! d ! d !
! ! ! ! !
*-----------------------------------*
4 Navnekonvensjoner
Variabelnavn er fritt valgt for å si mest mulig om hva variabelen inneholder.
De fleste rutiner i brukergrensesnittet starter med "LC_":
I tillegg kommer noen spesielle rutiner for å lese filhodet direkte fra
SOSI-fil. Disse har navn som starter med "HO_":
5 Initiering og styring
LC_Init
Initierer FYBA
=============================================================================
Formål:
Initierer FYBA.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
Bruk:
LC_Init();
=============================================================================
SK_EntPnt_FYBA void LC_Init(void)
LC_InqVer
Identifikasjon
=============================================================================
Formål:
Henter versjons-identifikasjon for dette biblioteket.
=============================================================================
SK_EntPnt_FYBA char *LC_InqVer(void)
LC_Close
Stenger ned FYBA
=============================================================================
Formål:
Stenger ned FYBA.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
Bruk:
LC_Close();
=============================================================================
SK_EntPnt_FYBA void LC_Close(void)
LC_ErInitiert
Er FYBA initiert
=============================================================================
Formål:
Sjekker om FYBA er initiert / tilgjengelig for bruk.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short sStaus r 0=ikke initiert, eller FYBA er stengt ned
1=initiert
Bruk:
sStatus = LC_ErInitiert();
=============================================================================
SK_EntPnt_FYBA short LC_ErInitiert(void)
LC_MaxSkriv
Max skriv før lagring
==========================================================================
Formål:
Setter max antall skriv uten lagring til SOSI-filen.
(0 = allt skrives direkte til SOSI-filen.)
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long antall i Max antall skriv uten lagring til SOSI-filen
Bruk:
LC_MaxSkriv(antall);
=============================================================================
SK_EntPnt_FYBA void LC_MaxSkriv(long antall)
LC_InqMaxSkriv
Max skriv før lagring
==========================================================================
Formål:
Spørr etter max antall skriv uten lagring til SOSI-filen.
(0 = allt skrives direkte til SOSI-filen.)
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long antall i Max antall skriv uten lagring til SOSI-filen
Bruk:
antall = LC_InqMaxSkriv();
=============================================================================
SK_EntPnt_FYBA long LC_InqMaxSkriv(void)
LC_SetNgisModus
Velg NGIS modus
==========================================================================
Formål:
Velger handteringsmåte for grupper som er merket for oppdatering av NGIS.
Standardverdi fra LC_Init er NGIS_NORMAL.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short modus i Behandlingsmåte:
NGIS_NORMAL (0) = Vanlig handtering
NGIS_SPESIAL (1) = Spesialmodus der det er mulig å lese
grupper som er merka som sletta.
Bruk:
LC_SetNgisModus(NGIS_NORMAL);
==========================================================================
SK_EntPnt_FYBA void LC_SetNgisModus(short modus)
LC_SetDefLpfi
Ledig plass mellom grupper
==========================================================================
Formål:
Legger inn standardverdi for antall tegn ledig plass bak gruppe
på .SOS-fil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short ant_tegn i Antall tegn ledig plass.
Bruk:
LC_SetDefLpfi(ant_tegn);
=============================================================================
SK_EntPnt_FYBA void LC_SetDefLpfi(short ant_tegn)
LC_InqDefLpfi
Hent ledig plass mellom grupper
==========================================================================
Formål:
Henter ut standardverdi for antall tegn ledig plass bak gruppe
på .SOS-fil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short ant_tegn r Antall tegn ledig plass.
Bruk:
ant_tegn = LC_InqDefLpfi();
=============================================================================
SK_EntPnt_FYBA short LC_InqDefLpfi(void)
LC_SetUtvidModus
Velg utvis modus
==========================================================================
Formål:
Velger handteringsmåte for utvidelse av SOSI-filer.
Standardverdi fra LC_Init er LC_UTVID_SIKKER.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short modus i Behandlingsmåte:
LC_UTVID_SIKKER (0) = SOSI-filen stenges og filstørrelsen
oppdateres etter hver gruppe som er
skrevet på slutten av filen.
LC_UTVID_RASK (1) = SOSI-filen stenges IKKE etter hver
gruppe som er skrevet på slutten
av filen.
(Må bare brukes i spesielle tilfeller.)
Bruk:
LC_SetUtvidModus(LC_UTVID_SIKKER);
==========================================================================
SK_EntPnt_FYBA void LC_SetUtvidModus(short modus)
LC_GetUtvidModus
Hent utvis modus
==========================================================================
Formål:
Henter valgt handteringsmåte for utvidelse av SOSI-filer.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short modus r Behandlingsmåte:
LC_UTVID_SIKKER (0) = SOSI-filen stenges og filstørrelsen
oppdateres etter hver gruppe som er
skrevet på slutten av filen.
LC_UTVID_RASK (1) = SOSI-filen stenges IKKE etter hver
gruppe som er skrevet på slutten
av filen.
(Må bare brukes i spesielle tilfeller.)
Bruk:
short sModus = LC_GetUtvidModus();
==========================================================================
SK_EntPnt_FYBA short LC_GetUtvidModus(void)
6 Åpning av base og sosi-filer
LC_OpenBase
Åpner ny base
==========================================================================
Formål:
Åpner en base, nullstiller tabellene.
Hvis basen er kladdebase opprettes en SOSI-fil med en gruppe i basen,
denne brukes som buffer for les / skriv.
Kladdefilen legges på current directory.
Kladdebase brukes bare når alle SOSI-filer åpnes med sekvensiell les/skriv.
Den nye basen velges som aktuell base.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short sBaseType i Basetype. Konstanter definert:
LC_BASE = Vanlig base.
LC_KLADD = Kladdebase. Brukes bare i spesielle
tilfeller hvis ingen fil åpnes
som LC_BASE_xx.
LC_BASEADM * pBase r Basepeker.
Bruk:
pBase = LC_OpenBase(sBaseType);
==========================================================================
SK_EntPnt_FYBA LC_BASEADM * LC_OpenBase(short sBaseType)
LC_CloseBase
Steng base
==========================================================================
Formål:
Stenger alle filer i basen, og frigir baseadministrasjonsblokken.
Hvis aktuell base blir stengt blir første base i systemet valgt som ny
aktuell base.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
PLCBASEADM pBase i Peker tilBaseAdm
short s_stat i Slutt-status
RESET_IDX = Fjern indeksfilene
SAVE_IDX = Lagrer indeksfilene.
ABORT = Fjerner indeksfilene (ved avbrutt
indeks oppbygging).
Bruk:
LC_CloseBase(pBase,s_stat);
==========================================================================
SK_EntPnt_FYBA void LC_CloseBase(LC_BASEADM * pBase,short s_stat)
LC_SelectBase
Velg aktuell base
==========================================================================
Formål:
Velger ny aktuell base.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BASEADM * pBase i Peker til BasAdm.
Bruk:
LC_SelectBase(pBase);
==========================================================================
SK_EntPnt_FYBA void LC_SelectBase(LC_BASEADM * pBase)
LC_InqCurBase
Aktuell base
==========================================================================
Formål:
Spørr etter aktuell base.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BASEADM * pBase r Basepeker.
Bruk:
pBase = LC_InqCurBase();
=============================================================================
SK_EntPnt_FYBA LC_BASEADM * LC_InqCurBase(void)
LC_OpenSos
Åpner og sjekker SOSI-fil
==========================================================================
Formål:
Åpner en ny fil i aktuell base.
Allokerer minne til ny filadministrasjonsblokk og initierer denne.
Åpner SOSI-filen og legger navn mm. inn i fil-adm.
Leser hodet og tolker det inn i filtabellen.
Hode blir ikke generert for nye filer. Dette kan lages med LC_PutGi, eller
LC_NyttHode eller kopieres fra annen fil, og skrives med LC_WsGr
eller LC_WxGr.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------
char *fil i Filnavn inkl. sti og fil-type
(Hvis fil-type mangler forutsettes .SOS)
short sModus i Filmodus
LC_BASE_FRAMGR = Framgrunnsfil
LC_BASE_BAKGR = Bakgrunnsfil (Bare les)
LC_SEKV_LES = Sekvensiell, les
LC_SEKV_SKRIV = Sekvensiell, skriv
LC_SEKV_UTVID = Sekvensiell, utvid gammel fil
short sNyIdx i Indeksgenerering:
LC_NY_IDX = Tvungen nygenerering
LC_GML_IDX = Bruk gammel .idx hvis den er OK
short sVisStatus i Vis indeksoppbygging
LC_VIS_STATUS = Vis status
LC_INGEN_STATUS = Ikke vis status
LC_FILADM **pFil u Peker til FilAdm blokk.
short *o_stat u Detaljert åpningsstatus:
0: Åpning og hode OK
>0: Åpningsfeil feilmelding
-1: Åpning OK, tom fil / ikke SOSI-fil
-2: Ikke åpnet, kan ikke bruke append på
tom fil / ikke sosi-fil
-3: (LC_CANCEL): Ikke åpnet,
indeksoppbygging avbrutt med [Esc],
eller feil på filen.
-4: (LC_DUBLIKAT): Filen er i basen fra før (pFil)
-5: (LC_OPPTATT): Filen er åpen i annet program
short status r Åpningsstatus: UT_TRUE = OK
UT_FALSE = Feil, (o_stat gir detalj)
Bruk:
ist=LC_OpenSos(fil,LC_BASE_FRAMGR,LC_NY_IDX,LC_VIS_STATUS,&pFil,&o_stat);
ist=LC_OpenSos(fil,LC_SEKV_LES,LC_NY_IDX,LC_INGEN_STATUS,&pFil,&o_stat);
==========================================================================
/// LC_OpenSos Åpner og sjekker SOSI-fil FYBA biblioteket.
///
/// Filnavn inkl. sti og fil-type (Hvis fil-type mangler forutsettes .SOS)
SK_EntPnt_FYBA short LC_OpenSos(const char *fil,short sModus,short sNyIdx,short sVisStatus,
LC_FILADM **pFil, short *o_stat)
LC_CloseSos
Steng SOSI-fil
==========================================================================
Formål:
Stenger en SOSI-fil, og fjerner den fra basen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm-blokk
short s_stat i Slutt-status
RESET_IDX = Fjern indeksfilene
SAVE_IDX = Lagrer indeksfilene.
Bruk:
LC_CloseSos(pFil,SAVE_IDX);
==========================================================================
SK_EntPnt_FYBA void LC_CloseSos(LC_FILADM *pFil,short s_stat)
LC_DelIdx
Sletter indeksfilene
==========================================================================
Formål:
Sletter indeksfilene for gitt SOSI-fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char *szSosFil i SOSI-filnavn
Bruk:
LC_DelIdx(szSosFil);
==========================================================================
SK_EntPnt_FYBA void LC_DelIdx(char *szSosFil)
LC_FcloseSos
Steng åpen SOSI-fil i filsystemet
==========================================================================
Formål:
Denne rutinen brukes til å sikre at en fil er oppdatert og stengt i filsystemet,
slik at SOSI-filen kan leses fra andre program.
OBS!
Stenger bare filen i filsystemet.
Filen er fortsatt åpen i basen.
FYBA åpner automatisk filen på nytt når det er behov for dette.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm-blokk
Bruk:
LC_FcloseSos(pFil);
==========================================================================
SK_EntPnt_FYBA void LC_FcloseSos(LC_FILADM *pFil)
7 Hjelpefunksjoner
7.1 Base og fil
LC_GetBaOm
Hent baseområde
==========================================================================
Formål:
Henter baseområdet for aktuell base (Sum av filhodene).
Sekvensielle filer regnes ikke med.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
(Bruk "|" for å kombinere.)
double *nva u Nedre venstre øst
double *nvn u Nedre venstre nord
double *oha u Øvre høyre øst
double *ohn u Øvre høyre nord
short sStatus r UT_TRUE=OK, UT_FALSE=ingen fil
Bruk:
sStatus = LC_GetBaOm(LC_FRAMGR,&nva,&nvn,&oha,&ohn);
==========================================================================
SK_EntPnt_FYBA short LC_GetBaOm(unsigned short usLag,double *nva,double *nvn,double *oha,
double *ohn)
LC_GetFiOm
Hent område fra fil-hode
==========================================================================
Formål:
Hent område for en SOSI-fil i basen.
Fungerer ikke mot sekvensielle filer.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
double nva u Nedre venstre øst
double nvn u Nedre venstre nord
double oha u Øvre høyre øst
double ohn u Øvre høyre nord
short ist r Status (UT_TRUE=OK, UT_FALSE=sekvensiell fil)
Bruk:
ist = LC_GetFiOm(pFil,&nva,&nvn,&oha,&ohn);
==========================================================================
SK_EntPnt_FYBA short LC_GetFiOm(LC_FILADM *pFil,double *nva,double *nvn,double *oha,double *ohn)
LC_GetFiNr
Get fil nummer
==========================================================================
Formål:
Sjekker alle filer i aktuell base om noen av den har det gitte filnavnet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char fil_navn i Filnavn
LC_FILADM *pFil r Peker til FilAdm for filen. (NULL = ukjent fil)
Bruk:
pFil = LC_GetFiNr(fil_navn);
==========================================================================
SK_EntPnt_FYBA LC_FILADM *LC_GetFiNr(const char *fil_navn)
LC_GetFiNa
Hent filnavn
==========================================================================
Formål:
Henter filnavnet for en fil i basen. Fungerer både for basefiler
og for sekvensielle filer.
OBS! Hvis du skal endre på filnavnet må du først kopiere det
til en lokale varialel.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
char *fil_navn r Peker til filnavn
Bruk:
fil_navn = LC_GetFiNa(pFil);
==========================================================================
SK_EntPnt_FYBA char *LC_GetFiNa(LC_FILADM *pFil)
LC_GetTegnsett
Finner tegnsett
==========================================================================
Formål:
Finne tegnsett i ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short *psTegnsett u Tegnsett, konstanter definert:
TS_DOSN8 = DOS norsk 8-bits(standardverdi)
TS_ND7 = Norsk Data 7-bits
TS_ISO8859 = ISO8859-10 norsk/samisk
TS_DECM8 = DEC multinasjonal 8-bits
TS_DECN7 = DEC norsk 7-bits
short sStatus r Status: UT_TRUE = Funnet
UT_FALSE = Ikke funnet
Bruk:
sStatus = LC_GetTegnsett(&sTegnsett);
==========================================================================
SK_EntPnt_FYBA short LC_GetTegnsett(short *psTegnsett)
LC_InqLag
Finn hvilet lag aktuell gruppe tilhører
==========================================================================
Formål:
Finn hvilket lag aktuell gruppe tilhører.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
unsigned short *usLag u "Lag": LC_FRAMGR eller LC_BAKGR
short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
Bruk:
status = LC_InqLag(&usLag);
==========================================================================
SK_EntPnt_FYBA short LC_InqLag(unsigned short *usLag)
LC_InqFilLag
Finn hvilet lag en fil tilhører
==========================================================================
Formål:
Finn hvilket lag en fil tilhører.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
unsigned short usLag r "Lag": LC_FRAMGR eller LC_BAKGR
Bruk:
usLag = LC_InqFilLag(pFil);
==========================================================================
SK_EntPnt_FYBA unsigned short LC_InqFilLag(LC_FILADM *pFil)
LC_SetFilLag
Velg hvilet lag en fil tilhører
==========================================================================
Formål:
Velg hvilket lag en fil tilhører.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
unsigned short usLag i "Lag": LC_FRAMGR eller LC_BAKGR
Bruk:
LC_SetFilLag(pFil,LC_FRAMGR);
==========================================================================
SK_EntPnt_FYBA void LC_SetFilLag(LC_FILADM *pFil,unsigned short usLag)
LC_FiLastGr
Finn siste gruppe i filen
==========================================================================
Formål:
Finner gruppenummer for siste gruppe i filen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
bgr long r Gruppenummer
Bruk:
bgr = LC_FiLastGr(pFil);
==========================================================================
SK_EntPnt_FYBA long LC_FiLastGr(LC_FILADM *pFil)
LC_ErFilBase
Sjekker om en fil er i basen
==========================================================================
Formål:
Sjekker om en fil er i basen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------
char *fil i Filnavn inkl. sti og fil-type
(Hvis fil-type mangler forutsettes .SOS)
short status r Status: UT_TRUE = Filen er med i basen.
UT_FALSE = Filen er IKKE med i basen.
Bruk:
ist = LC_ErFilBase(fil);
==========================================================================
SK_EntPnt_FYBA short LC_ErFilBase(const char *fil)
LC_ErKoordsysLik
Sjekker KOORDSYS
=======================================================================
Formål:
Sjekk at alle filene i basen har samme koordinatsystem.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
short status r Status: UT_TRUE = KOORDSYS er lik.
UT_FALSE = KOORDSYS er IKKE lik.
Bruk:
ist = LC_ErKoordsysLik();
=======================================================================
SK_EntPnt_FYBA short LC_ErKoordsysLik(void)
LC_ErVertdatumLik
Sjekker VERT-DATUM
=======================================================================
Formål:
Sjekk at alle filene i basen har samme VERT-DATUM.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
short status r Status: UT_TRUE = VERT-DATUM er lik.
UT_FALSE = VERT-DATUM er IKKE lik.
Bruk:
ist = LC_ErVertdatumLik();
=======================================================================
SK_EntPnt_FYBA short LC_ErVertdatumLik(void)
LC_Backup
Lag backup av gitt SOSI-fil
==========================================================================
Formål:
Lag backup av gitt SOSI-fil.
Kopien legges på en underkatlog med navn "Backup" under den katalogen
SOSI-filen ligger på. Kopien navnes "Filnavn.nnn" der nnn er et
fortløpende nummer fra 000 og oppover. Det første ledige numret blir brukt.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
char *pszBackupPath i Katalognavn for lagring av backup.
short sStatus r UT_TRUE = OK
UT_FALSE = Feil.
Bruk:
sStatus = LC_Backup(pFil, szBackupPath);
==========================================================================
SK_EntPnt_FYBA short LC_Backup(LC_FILADM *pFil, const char *pszBackupPath)
LC_GetNgisLag
Hent NGIS-LAG
==========================================================================
Formål:
Henter NGIS-LAG for gitt fil.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk strcpy).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Fil det ønskes opplsninger om.
char* pszNgisLag r NGIS-lag.
Tom streng = ..NGIS-LAG er ikke funnet
"0" = Bare leseaksess (..NGIS-LAG 0)
Bruk:
pszNgisLag = LC_GetNgisLag(pFil);
==========================================================================
SK_EntPnt_FYBA char* LC_GetNgisLag(LC_FILADM *pFil)
LC_SetFilType
Setter filtype for en sosifil
==========================================================================
Formål:
Setter filtype for en fil.
Denne rutinen er primært tenkt brukt i GabEdit hvor det er behov for å
definere flere typer arbeidsfil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til filen
short type i Filtypen som skal settes
LC_FILTYPE_UKJENT
LC_FILTYPE_INAKTIV
LC_FILTYPE_GAB_EIENDOM
LC_FILTYPE_GAB_ADRESSE
LC_FILTYPE_GAB_BYGNING
LC_FILTYPE_BYGG
LC_FILTYPE_DEK
LC_FILTYPE_DEK_ENDRING
LC_FILTYPE_GRUNNKRETS
LC_FILTYPE_POSTKRETS
LC_FILTYPE_SKOLEKRETS
LC_FILTYPE_KIRKESOGN
LC_FILTYPE_TETTSTED
LC_FILTYPE_VALGKRETS
Bruk:
LC_SetFilType(pFil,type);
=============================================================================
SK_EntPnt_FYBA void LC_SetFilType(LC_FILADM *pFil, short sType)
LC_GetFilType
Henter filtype for en sosifil
==========================================================================
Formål:
Finner filtypen for en fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til filen
short type r Filtypen som skal settes
LC_FILTYPE_UKJENT
LC_FILTYPE_INAKTIV
LC_FILTYPE_GAB_EIENDOM
LC_FILTYPE_GAB_ADRESSE
LC_FILTYPE_GAB_BYGNING
LC_FILTYPE_BYGG
LC_FILTYPE_DEK
LC_FILTYPE_DEK_ENDRING
LC_FILTYPE_GRUNNKRETS
LC_FILTYPE_POSTKRETS
LC_FILTYPE_SKOLEKRETS
LC_FILTYPE_KIRKESOGN
LC_FILTYPE_TETTSTED
LC_FILTYPE_VALGKRETS
Bruk:
type = LC_GetFilType(pFil);
=============================================================================
SK_EntPnt_FYBA short LC_GetFilType(LC_FILADM *pFil)
LC_ErLik_Avrundet
Rund av og sjekk om sammenfallende punkt
==========================================================================
Formål:
Runder av til valgt enhet, og sjekker om de to punktene er sammenfallende.
(Avviket er mindre enn 1/10 enhet både nord og øst)
Parametre:
Type Navn I/U Forklaring
---------------------------------------------------------------------------
double dA1 i P1
double dN1 i
double dA2 i P2
double dN2 i
double dEnhet i Enhet som skal brukes i sammenligningen
bool bErLike r Status: true = Samme koordinat
false = Ikke samme koordinat
Bruk:
bSammenfallende = LC_ErLik(dA1,dN1,dA2,dN2,dEnhet);
===========================================================================
SK_EntPnt_FYBA bool LC_ErLik_Avrundet(double dA1,double dN1,double dA2, double dN2, double dEnhet)
LC_ErLik_IkkeAvrundet
Sjekk om sammenfallende punkt (uten avrunding)
==========================================================================
Formål:
Sjekker om de to punktene er sammenfallende innen gitt nøyaktighet.
Det skjer ingen avrunding av koordinatene før sammenligningen.
(Avviket er mindre enn 1/10 enhet både nord og øst)
Parametre:
Type Navn I/U Forklaring
---------------------------------------------------------------------------
double dA1 i P1
double dN1 i
double dA2 i P2
double dN2 i
double dEnhet i Enhet som skal brukes i sammenligningen
bool bErLike r Status: true = Samme koordinat
false = Ikke samme koordinat
Bruk:
bSammenfallende = LC_ErLik(dA1,dN1,dA2,dN2,dEnhet);
===========================================================================
SK_EntPnt_FYBA bool LC_ErLik_IkkeAvrundet(double dA1,double dN1,double dA2, double dN2, double dEnhet)
LC_ErReferert
Sjekk om gruppe er referert
==========================================================================
Formål:
Sjekker om aktuell gruppe er referert fra andre grupper.
Parametre:
Type Navn I/U Forklaring
---------------------------------------------------------------------------
bool bReferert r Det finnes referanser til gruppen
Bruk:
bReferert = LC_ErReferert();
===========================================================================
SK_EntPnt_FYBA bool LC_ErReferert(void)
7.2 SOSI-gruppe
LC_GetGrNr
Hent gruppe-nummer
==========================================================================
Formål:
Henter gruppenummer for aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pBgr iu Peker til gruppestruktur der gruppenummer lagres
short status r Status UT_TRUE=OK, UT_FALSE=ingen aktuell gruppe
Bruk:
status = LC_GetGrNr(&Bgr)
==========================================================================
SK_EntPnt_FYBA short LC_GetGrNr(LC_BGR * pBgr)
LC_GetGrPara
Hent gruppe-parametre
==========================================================================
Formål:
Henter diverse opplysninger om aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
short *ngi u Antall linjer GINFO
long *nko u Antall koordinater
short *info u Diverse informasjon. En sum av følgende:
GI_PINFO = gruppen har PINFO
GI_NAH = gruppen har høyde informasjon (..NØH)
GI_NAD = gruppen har dybde informasjon (..NØD)
GI_KP = gruppen har knutepunkt (...KP n)
GI_REF = gruppen har referanser (.. :n)
GI_OY_REF= gruppen har referanser med øy
GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
GI_SLETTA = gruppen er sletta (merka som sletta)
GI_READ_ONLY = gruppen kan ikke endres.
short gnavn r Gruppenavn. (Se under LC_RxGr)
Bruk:
gnavn = LC_GetGrPara(&ngi,&nko,&info);
==========================================================================
SK_EntPnt_FYBA short LC_GetGrPara(short *ngi,long *nko,unsigned short *info)
LC_GetGrParaBgr
Hent gruppe-parametre for gruppe
=============================================================================
Formål:
Henter diverse opplysninger om gitt gruppenummer.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_BGR * pBgr i Gruppenummer det ønskes opplysninger om.
short *ngi u Antall linjer GINFO (0=sletta eller ulovlig nummer)
long *nko u Antall koordinater
unsigned short *info u Diverse informasjon. En sum av følgende:
GI_PINFO = gruppen har PINFO
GI_NAH = gruppen har høyde informasjon (..NØH)
GI_NAD = gruppen har døbde informasjon (..NØD)
GI_KP = gruppen har knutepunkt (...KP n)
GI_REF = gruppen har referanser (.. :n)
GI_OY_REF= gruppen har referanser med øy
GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
GI_SLETTA = gruppen er sletta (merka som sletta)
GI_READ_ONLY = gruppen kan ikke endres.
short gnavn r Gruppenavn. (Se under LC_RxGr)
Bruk:
gnavn = LC_GetGrParaBgr(pBgr,&ngi,&nko,&info,&snr);
=============================================================================
SK_EntPnt_FYBA short LC_GetGrParaBgr(LC_BGR * pBgr,short *ngi,long *nko,unsigned short *info)
LC_GetGrFi
Hent gruppe-filnr
=============================================================================
Formål:
Henter peker til FilAdm for aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM * *ppFil u Peker til FilAdm-peker
short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
Bruk:
status = LC_GetGrFi(&pFil);
=============================================================================
SK_EntPnt_FYBA short LC_GetGrFi(LC_FILADM **ppFil)
LC_SetEndringsstatus
Setter endringsstatus for aktuell gruppe
==========================================================================
Formål:
Setter endringsstatus for aktuell gruppe.
NB! Denne rutinen bør normalt ikke brukes av vanlige klient-program!
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short sStatus i Kode for endring:
END_UENDRA 0 Ikke endra
END_KOPI 1 Endra ved totalkopi fra annen gruppe
END_ENDRA 2 Endra ved normal Put fra program
Bruk:
LC_dg_SetEndringsstatus(END_KOPI);
=============================================================================
SK_EntPnt_FYBA void LC_SetEndringsstatus(short sStatus)
7.3 Hode, aktuell gruppe
LC_NyttHode
Lager nytt hode
==========================================================================
Formål:
Legger inn et standard SOSI-filhode i ginfo i aktuell gruppe.
Parametre:
ingen
Bruk:
LC_NyttHode();
==========================================================================
SK_EntPnt_FYBA void LC_NyttHode(void)
LC_TestHode
Tester SOSI-hodet
==========================================================================
Formål:
Sjekker at ginfo i aktuell gruppe er et lovlig SOSI-filhode.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short ist r status: UT_TRUE=OK, UT_FALSE=feil
Bruk:
ist = LC_TestHode();
==========================================================================
SK_EntPnt_FYBA short LC_TestHode(void)
LC_GetOmr
Finner ..OMRÅDE i hodet
==========================================================================
Formål:
Henter ut område fra ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double *nv_a u Område
double *nv_n u
double *oh_a u
double *oh_n u
short ist r status: UT_TRUE=OK, UT_FALSE=feil (navn er ikke funnet)
Bruk:
ist = LC_GetOmr(&nv_a,&nv_n,&oh_a,&oh_n);
==========================================================================
SK_EntPnt_FYBA short LC_GetOmr(double *nv_a,double *nv_n,double *oh_a,double *oh_n)
LC_PutOmr
Legger inn ..OMRÅDE i hodet
==========================================================================
Formål:
Legger inn område i ginfo i aktuell gruppe.
Hvis område ikke har noen utstrekning justeres
dette med 1 meter i hver retning.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode av ny type.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double nv_a i Område
double nv_n i
double oh_a i
double oh_n i
short ist r status: UT_TRUE=OK, UT_FALSE=feil
Bruk:
ist = LC_PutOmr(nv_a,nv_n,oh_a,oh_n);
==========================================================================
SK_EntPnt_FYBA short LC_PutOmr(double nv_a,double nv_n,double oh_a,double oh_n)
LC_GetTrans
Finner ..TRANSPAR i hodet
==========================================================================
Formål:
Henter ut transformasjonsparametrene fra ginfo i aktuell gruppe.
Forutsetter at aktuell gruppe er et SOSI-filhode.
OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
For nye programmer bør LC_GetTransEx benyttes. LC_GetTransEx er
kompatibel med nye versjoner av SOSI.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short *koosys u Koordinatsystem
double *origo_a u Origo øst
double *origo_n u Origo nord
double *enhet u Enhet
double *enhet_h u ...ENHET-H
double *enhet_d u ...ENHET-D
short ist r status: UT_TRUE=OK, UT_FALSE=feil (navn er ikke funnet)
Bruk:
ist = LC_GetTrans(&koosys,&origo_a,&origo_n,&enhet,&enhet_h,&enhet_d);
==========================================================================
SK_EntPnt_FYBA short LC_GetTrans(short *koosys,double *origo_a,double *origo_n,double *enhet,
double *enhet_h,double *enhet_d)
LC_GetTransEx
Henter ..TRANSPAR fra hodet
==========================================================================
Formål:
Henter ut innholdet under ..TRANSPAR fra ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
Må velge mellom KOORDSYS, TRANSSYS eller GEOSYS. Kun en av disse kan benyttes i filhodet.
KOORDSYS er den mest vanlige måte å definere referansesystem.
GEOKOORD skal benyttes for GEOSYS og for TRANSSYS
Må velge mellom VERT-DATUM eller VERT-INT.
VERT-DATUM er den mest vanlige beskrivelsesmåten.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
unsigned short *pusMaske iu [Inn] Styrer hvilke deler av TRANSPAR som skal hentes
[Ut] Viser hvilke deler av TRANSPAR som er funnet/hentet.
Følgende konstanter er definert:
LC_TR_ALLT - Alle deler av ..TRANSPAR hentes
LC_TR_KOORDSYS - Koordsys
LC_TR_TRANSSYS - Transsys
LC_TR_GEOSYS - Geosys
LC_TR_GEOKOORD - Geokoord
LC_TR_ORIGO - Origo-nø
LC_TR_ENHET - Enhet
LC_TR_ENHETH - Enhet-h
LC_TR_ENHETD - Enhet-d
LC_TR_VERTDATUM - Vert-datum
LC_TR_VERTINT - Vert-int
LC_TR_VERTDELTA - Vert-delta
LC_TRANSPAR * pTrans iu Peker til struktur som skal motta ..TRANSPAR informasjonen.
short sStatus r Status: UT_TRUE=OK, UT_FALSE=feil (ikke funnet).
Bruk:
unsigned short usMaske = LC_TR_ALLT;
LC_TRANSPAR Trans;
ist = LC_GetTransEx(&usMaske,&Trans);
==========================================================================
SK_EntPnt_FYBA short LC_GetTransEx(unsigned short *pusMaske, LC_TRANSPAR * pTrans)
LC_PutTrans
Legger inn ..TRANSPAR i hodet
==========================================================================
Formål:
Legger inn transformasjonsparametrene i ginfo i aktuell gruppe.
Forutsetter at aktuell gruppe er et SOSI-filhode versjon 3.x.
OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
For nye programmer bør LC_PutTransEx benyttes. LC_PutTransEx er
kompatibel med nye versjoner av SOSI.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short koosys i Koordinatsystem
double origo_a i Origo øst
double origo_n i Origo nord
double enhet i Enhet
double enhet_h i Enhet-H
double enhet_d i Enhet-D
short ngi r Antall GINFO-linjer etter oppdateringen.
Bruk:
ngi = LC_PutTrans(koosys,origo_a,origo_n,enhet,enhet_h,enhet_d);
==========================================================================
SK_EntPnt_FYBA short LC_PutTrans(short koosys,double origo_a,double origo_n,
double enhet,double enhet_h,double enhet_d)
LC_PutTransEx
Legger inn ..TRANSPAR i hodet
==========================================================================
Formål:
Legger inn innholdet under ..TRANSPAR i ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode versjon 3.x.
Må velge mellom KOORDSYS, TRANSSYS eller GEOSYS.
Kun en av disse kan benyttes i filhodet.
KOORDSYS er den mest vanlige måte å definere referansesystem.
GEOKOORD skal benyttes for GEOSYS og for TRANSSYS
Må velge mellom VERT-DATUM eller VERT-INT.
VERT-DATUM er den mest vanlige beskrivelsesmåten.
Følgende kompaktifisering brukes:
..TRANSPAR
...KOORDSYS
...TRANSSYS
...GEOSYS
...GEOKOORD
...ORIGO-NØ
...ENHET
...ENHET-H
...ENHET-D
...VERT-DATUM
...VERT-INT
...VERT-DELTA
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
unsigned short usMaske i Maske som styrer hvilke deler av TRANSPAR som brukt
Følgende konstanter er definert:
LC_TR_KOORDSYS - Koordsys
LC_TR_TRANSSYS - Transsys
LC_TR_GEOSYS - Geosys
LC_TR_GEOKOORD - Geokoord
LC_TR_ORIGO - Origo-nø
LC_TR_ENHET - Enhet
LC_TR_ENHETH - Enhet-h
LC_TR_ENHETD - Enhet-d
LC_TR_VERTDATUM - Vert-datum
LC_TR_VERTINT - Vert-int
LC_TR_VERTDELTA - Vert-delta
LC_TRANSPAR * pTrans i Peker til struktur med ..TRANSPAR informasjonen.
short ngi r Antall GINFO-linjer etter oppdateringen.
Bruk:
LC_TRANSPAR Trans;
unsigned short usMaske = LC_TR_KOORDSYS | LC_TR_ORIGO | LC_TR_ENHET;
Trans.sKoordsys = 32;
Trans.dOrigoAust = 0.0;
Trans.dOrigoNord = 0.0;
Trans.dEnhet = 1.0;
ngi = LC_PutTransEx(usMaske,&Trans);
==========================================================================
SK_EntPnt_FYBA short LC_PutTransEx(unsigned short usMaske, LC_TRANSPAR * pTrans)
7.4 Hode, direkte fra SOSI-fil
HO_New
Lager nytt hode
=========================================================================
Formål:
Genererer et nytt SOSI-filhode.
Hvis område ikke har noen utstrekning justeres
dette med 1 meter i hver retning.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
short koosys i Koordinatsystem
double origo_a i Origo øst
double origo_n i Origo nord
double enhet i Enhet
double enhet_h i Enhet-H
double enhet_d i Enhet-D
double nv_a i Område: Nedre venstre hjørne
double nv_n i
double oh_a i Øvre høyre hjørne
double oh_n i
short sStatus r Status: UT_TRUE = Funnet
UT_FALSE = Ikke funnet
Bruk:
sStatus = HO_New(fil,koosys,origo_a,origo_n,enhet,enhet_h-enhet_d,
nv_a,nv_n,oh_a,oh_n);
=============================================================================
SK_EntPnt_FYBA short HO_New(const char *pszFil,short koosys,double origo_a,double origo_n,
double enhet,double enhet_h,double enhet_d,
double nv_a,double nv_n,double oh_a,double oh_n)
HO_TestSOSI
Tester SOSI-filen
=============================================================================
Formål:
Sjekker at filen er en SOSI-fil, og finner posisjonen for .SLUTT.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
UT_INT64 *sluttpos u Posisjon for .SLUTT
short ist r Status: UT_TRUE = OK
UT_FALSE = feil
Bruk:
ist = HO_TestSOSI(pszFil,&sluttpos);
=============================================================================
SK_EntPnt_FYBA short HO_TestSOSI(const char *pszFil,UT_INT64 *sluttpos)
HO_GetKvalitet
Finner kvalitetsopplysninger
=============================================================================
Formål:
Finne kvalitetsopplysninger i filhode.
(Ikke aktuellt etter SOSI v. 4.00.)
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
short *psMetode u Hvordan data er registrert.
KVAL_MET_UNDEF metode er udefinert.
long *pLNnoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
short *psSynbarhet u Synbarhet i bilde
KVAL_SYN_UNDEF synbarhet er udefinert.
short *psHoydeMetode u Hvordan høyden er registrert.
KVAL_MET_UNDEF metode er udefinert.
long *plHoydeNoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
short ist r Statusvariabel: UT_TRUE - OK, ..KVALITET er funnet
UT_FALSE - ikke funnet
Bruk:
ist = HO_GetKvalitet(fil,&sMetode,&lNoyaktighet,&sSynbarhet,
&sHoydeMetode,&lHoydeNoyaktighet);
=============================================================================
SK_EntPnt_FYBA short HO_GetKvalitet(const char *pszFil,short *psMetode,long *plNoyaktighet,
short *psSynbarhet,short *psHoydeMetode,long *plHoydeNoyaktighet)
HO_GetTegnsett
Finner tegnsett
==========================================================================
Formål:
Finne tegnsett i filhodet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
short *psTegnsett u Tegnsett, konstanter definert:
TS_DOSN8 = DOS norsk 8-bits(standardverdi)
TS_ND7 = Norsk Data 7-bits
TS_DECM8 = DEC multinasjonal 8-bits
TS_ISO8859 = ISO8859-10 Norsk/samisk tegnsett
TS_DECN7 = DEC norsk 7-bits
short sStatus r Status: UT_TRUE = Funnet
UT_FALSE = Ikke funnet
Bruk:
sStatus = HO_GetTegnsett(pszFil,&sTegnsett);
==========================================================================
SK_EntPnt_FYBA short HO_GetTegnsett(const char *pszFil,short *psTegnsett)
HO_GetVal
Finn verdien til et SOSI-navn
=============================================================================
Formål:
Henter parametrene til et SOSI-navn.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk strcpy).
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
char *sosi_navn i SOSI-navn det skal finnes verdi til
short *sett_nr i/u i: "Sett nummer"(linjenummer) for start søking (min 1)
u: Ved tilslag returneres "Sett nummer" for
tilslaget.
char *para_peker r Peker til parameter-streng avslutta med '/0'.
Hvis SOSI-navnet ikke er funnet returneres NULL.
Bruk:
para_peker = HO_GetVal(fil,sosi_navn,&sett_nr);
=============================================================================
SK_EntPnt_FYBA char *HO_GetVal(const char *pszFil,char *sosi_navn,short *sett_nr)
HO_GetTrans
Finner .TRANSPAR i hodet
=============================================================================
Formål:
Henter transformasjonsparametrene fra filhodet.
OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
For nye programmer bør HO_GetTransEx benyttes. HO_GetTransEx er
kompatibel med nye versjoner av SOSI.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
short *koosys u Koordinatsystem
double *origo_a u ..ORIGO-AUST
double *origo_n u ..ORIGO-NORD
double *enhet u ...ENHET
double *enhet_h u ...ENHET-H
double *enhet_d u ...ENHET-D
short sStatus r UT_TRUE, eller UT_FALSE.
Bruk:
sStatus = HO_GetTrans(fil,&koosys,&origo_a,&origo_n,&enhet,&enhet_h,&enhet_d);
=============================================================================
SK_EntPnt_FYBA short HO_GetTrans(const char *pszFil,short *koosys,double *origo_a,
double *origo_n,double *enhet,double *enhet_h,double *enhet_d)
HO_GetTransEx
Finner .TRANSPAR i hodet
=============================================================================
Formål:
Henter ut innholdet under ..TRANSPAR fra fra filhodet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
unsigned short *pusMaske iu [Inn] Styrer hvilke deler av TRANSPAR som skal hentes
[Ut] Viser hvilke deler av TRANSPAR som er funnet/hentet.
Følgende konstanter er definert:
LC_TR_ALLT - Alle deler av ..TRANSPAR hentes
LC_TR_KOORDSYS - Koordsys
LC_TR_TRANSSYS - Transsys
LC_TR_GEOSYS - Geosys
LC_TR_GEOKOORD - Geokoord
LC_TR_ORIGO - Origo-nø
LC_TR_ENHET - Enhet
LC_TR_ENHETH - Enhet-h
LC_TR_ENHETD - Enhet-d
LC_TR_VERTDATUM - Vert-datum
LC_TR_VERTINT - Vert-int
LC_TR_VERTDELTA - Vert-delta
LC_TRANSPAR * pTrans iu Peker til struktur som skal motta ..TRANSPAR informasjonen.
short sStatus r Status: UT_TRUE=OK, UT_FALSE=feil (ikke funnet).
Bruk:
unsigned short usMaske = LC_TR_ALLT;
LC_TRANSPAR Trans;
ist = HO_GetTransEx("Test.sos",&usMaske,&Trans);
==========================================================================
SK_EntPnt_FYBA short HO_GetTransEx(const char *pszFil,unsigned short *pusMaske, LC_TRANSPAR * pTrans)
HO_GetOmr
Finner ..OMRÅDE i hodet
=============================================================================
Formål:
Henter områdeangivelsen fra filhodet.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
double *nv_a u
double *nv_n u
double *oh_a u
double *oh_n u
short sStatus r UT_TRUE, eller UT_FALSE.
Bruk:
sStatus = HO_GetOmr(pszFil,&nv_a,&nv_n,&oh_a,&oh_n);
=============================================================================
SK_EntPnt_FYBA short HO_GetOmr(const char * pszFil,double *nv_a,double *nv_n,double *oh_a,double *oh_n)
HO_SjekkTegnsett
Sjekker tegnsett på SOSI-filen
=============================================================================
Formål:
Sjekker faktisk tegnsett i .HODE.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
short *psTegnsett u Tegnsett, konstanter definert:
TS_UKJENT = Fikk ikke sjekket tegnsett
TS_DOSN8 = DOS norsk 8-bits(standardverdi)
TS_ND7 = Norsk Data 7-bits
TS_DECM8 = DEC multinasjonal 8-bits
TS_ISO8859 = ISO8859-10 Norsk/samisk tegnsett
TS_DECN7 = DEC norsk 7-bits
short sStatus r Status: 0 = Ikke funnet
1 = Ett tegnsett funnet
2 = Flere tegnsett funnet
Bruk:
sStatus = HO_SjekkTegnsett(fpek,tegnsett);
=============================================================================
SK_EntPnt_FYBA short HO_SjekkTegnsett(const char *pszFil,short *psTegnsett)
8 Ny gruppe
LC_NyGr
Ny gruppe i basen
==========================================================================
Formål:
Lager en ny gruppe i basen, og tildeler serienummer.
Sjekker at gruppenavnet er lovlig i denne versjon av FYBA.
Ved feil navn vil ".LINJE" bli valgt.
Legger inn gruppenavn i buffer.
Gruppen blir "aktuell" gruppe.
Sjekker ledig plass både for indeks-fil og sosi-fil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
char *sosi i Gruppenavn (Eks. ".KURVE")
LC_BGR * pBgr iu Tildelt gruppenummer i basen
(Bgr.lNr=INGEN_GRUPPE = Feil, ikke oppretta)
long snr u Tildelt serienummer
gnavn short r Gruppenavn. (Se under LC_RxGr)
INGEN_GRUPPE hvis det ikke er opprettet noen ny gruppe.
Bruk:
gnavn = LC_NyGr (pFil,sosi,&Bgr,&snr);
=============================================================================
SK_EntPnt_FYBA short LC_NyGr (LC_FILADM *pFil,char *sosi,LC_BGR * pBgr,long *snr)
9 Direkte les/skriv
LC_RxGr
Les gruppe fra base
==========================================================================
Formål:
Velger en gruppe som aktiv gruppe, og leser den fra SOSI-filen hvis den
ikke er i RB fra før. (Styres også av les_sosi.)
Hvis gruppen ikke finnes (sletta eller ulovlig gruppenummer) returneres
ngi=0 og nko=0.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pBgr i Peker til fil- og gruppenummer.
short les_sosi i Lesemetode: Følgende konstanter er definert:
LES_OPTIMALT (0 = Les mest effektivt base/SOSI)
LES_SOSI (1 = Les alltid fra SOSI-filen)
short *ngi u Antall linjer GINFO
long *nko u Antall koordinater
unsigned short *info u Diverse informasjon. En sum av følgende:
GI_PINFO = gruppen har PINFO
GI_NAH = gruppen har høyde informasjon (..NØH)
GI_NAD = gruppen har dybde informasjon (..NØD)
GI_KP = gruppen har knutepunkt (...KP n)
GI_REF = gruppen har referanser (.. eller ..REF)
GI_OY_REF = gruppen har referanser med øy
GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
GI_SLETTA = gruppen er sletta (merka som sletta)
GI_READ_ONLY = gruppen kan ikke endres.
short gnavn r Gruppenavn - Følgende konstanter er definert:
INGEN_GRUPPE = Gruppen finnes ikke, ikke lest.
L_SLUTT = (.SLUTT)
L_PUNKT = (.PUNKT)
L_LINJE = (.LINJE)
L_KURVE = (.KURVE)
L_BUE = (.BUE)
L_BUEP = (.BUEP)
L_SIRKEL = (.SIRKEL)
L_SIRKELP = (.SIRKELP)
L_KLOTOIDE = (.KLOTOIDE)
L_SVERM = (.SVERM)
L_TEKST = (.TEKST)
L_TRASE = (.TRASE)
L_FLATE = (.FLATE)
L_BEZIER = (.BEZIER)
L_RASTER = (.RASTER)
L_DEF = (.DEF)
L_OBJDEF = (.OBJDEF)
L_MLINJE = (.MLINJE)
L_STRUKTUR = (.STRUKTUR)
L_OBJEKT = (.OBJEKT)
L_SYMBOL = (.SYMBOL)
L_HODE = (.HODE)
Bruk:
gnavn = LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
if (info & GI_PINFO) (gruppen har PINFO)
;
if (info & GI_KP) (gruppen har KP)
;
==========================================================================
SK_EntPnt_FYBA short LC_RxGr(LC_BGR * pBgr,short les_sosi,short *ngi,long *nko,unsigned short *info)
LC_WxGr
Skriv gruppe til base
==========================================================================
Formål:
Skriver aktuell gruppe til tilhørende SOSI-fil.
Brukerindeks og geografisk indeks oppdateres straks, uavhengig av kø.
Ledig plass fram til neste gruppe blir blanket.
Filhode blir ALLTID skrevet direkte til SOSI-filen.
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
short k_stat i Skrivemetode: Følgende konstanter er definert:
SKRIV_OPTIMALT = Skriv mest effektivt kø/SOSI
SKRIV_SOSI = Skriv direkte til SOSI-filen
short status r Status: UT_TRUE = OK
UT_FALSE = Ikke utført, pga. feil.
Bruk:
LC_WxGr(k_stat)
==========================================================================
SK_EntPnt_FYBA short LC_WxGr(short k_stat)
10 Sekvensiell les/skriv
LC_RsGr
Les gruppe sekvensielt
==========================================================================
Formål:
Leser en datagruppe fra ekstern SOSI-fil inn i aktuell gruppe i ringbuffer.
Rutinen tilsvarer put fra brukerprogram inn i ringbufferet, men rutinen
tildeler selv nødvendig plass..
Gruppen beholder serienummer tildelt i LC_NyGr.
Brukerindeks og geografisk-indeks blir ikke oppdatert.
(Dette skjer først når gruppen skrives til basen.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short *rstat iu Lesestatus
Inn: 1=Les fra starten, 0=Les neste
Ut: 0=OK, -1=slutten av filen er nådd
LC_FILADM *pFil i Peker til FilAdm
short *ngi u Antall linjer GINFO
long *nko u Antall koordinater
unsigned short *info u Diverse informasjon. En "sum" av følgende:
GI_PINFO = gruppen har PINFO
GI_NAH = gruppen har høyde informasjon (..NØH)
GI_NAD = gruppen har dybde informasjon (..NØD)
GI_KP = gruppen har knutepunkt (...KP n)
GI_REF = gruppen har referanser (.. eller ..REF)
GI_OY_REF = gruppen har referanser med øy
GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
GI_SLETTA = gruppen er sletta (merka som sletta)
GI_READ_ONLY = gruppen kan ikke endres.
long gml_snr u Serienummer gruppen hadde på ekstern fil
short gnavn r Gruppenavn. (Se under LC_RxGr)
Bruk:
gnavn = LC_RsGr(&rstat,pFil,&ngi,&nko,&info,&gml_snr);
if (info & GI_PINFO) (gruppen har PINFO)
;
if (info & GI_KP) (gruppen har KP)
;
==========================================================================
SK_EntPnt_FYBA short LC_RsGr(short *rstat,LC_FILADM *pFil,short *ngi,long *nko,
unsigned short *info,long *gml_snr)
LC_RsHode
Les filhode sekvensiellt
==========================================================================
Formål:
Leser et filhode fra ekstern SOSI-fil inn i aktuell gruppe i ringbuffer.
Rutinen tilsvarer put fra brukerprogram inn i ringbufret, men rutinen
tildeler selv nødvendig plass i RB.
Denne rutinen er stort sett lik LC_RsGr, men LC_RsHode forandrer
ikke aktuell filposisjon på den sekvensielle filen.
Gruppen beholder serienummer hodet hadde på SOSI-filen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short *ngi u Antall linjer GINFO
long *nko u Antall koordinater
unsigned short *info u Diverse informasjon. En "sum" av følgende:
GI_PINFO = gruppen har PINFO
GI_NAH = gruppen har høyde informasjon (..NØH)
GI_NAD = gruppen har dybde informasjon (..NØD)
GI_KP = gruppen har knutepunkt (...KP n)
GI_REF = gruppen har referanser (.. :n)
GI_OY_REF= gruppen har referanser med øy
short gnavn r Gruppenavn. (Se under LC_RxGr)
Bruk:
gnavn = LC_RsHode(pFil,&ngi,&nko,&info);
=============================================================================
short LC_RsHode(LC_FILADM *pFil,short *ngi,long *nko,unsigned short *info)
LC_WsGr
Skriv gruppe sekvensiellt
=============================================================================
Formål:
Skriver aktuell gruppe til ekstern, sekvensiell SOSI-fil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
Bruk:
LC_WsGr(pFil);
=============================================================================
SK_EntPnt_FYBA void LC_WsGr(LC_FILADM *pFil)
LC_WsGrPart
Skriv del av gruppe sekvensiellt
==========================================================================
Formål:
Skriver en del av aktuell gruppe til ekstern, sekvensiell SOSI-fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
long fra_punkt i Punktnummer for første koordinat som skal skrives.
(Lovlig: 1 <= fra_punkt <= nko)
long antall i Antall koordinatlinjer som skal skrives.
(Lovlig: 0 <= antall <= nko)
Bruk:
LC_WsGrPart(pFil,fra_punkt,antall);
==========================================================================
SK_EntPnt_FYBA void LC_WsGrPart(LC_FILADM *pFil,long fra_punkt,long antall)
LC_EndreHode
Endre hodet på eksisterende SOSI-fil
=============================================================================
Formål:
Skriver aktuell gruppe til starten av sekvensiell SOSI-fil.
Det er en forutsetning at aktuell gruppe er et filhode.
Denne rutinen er stort sett lik LC_WsGr, men LC_EndreHode forandrer ikke
aktuell filposisjon på den sekvensielle filen.
OBS!
Det må være nok ledig plass før neste gruppe for tilbakeskrivingen.
Det er ikke mulig å forandre koordinatsystem, enhet eller origo på fil
som inneholder data.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short oppdatert r Skrivestatus (1=OK, 0=Det er ikke plass
til å skrive hodet)
Bruk:
ist = LC_EndreHode(pFil);
=============================================================================
SK_EntPnt_FYBA short LC_EndreHode(LC_FILADM *pFil)
11 Slette gruppe
LC_DelGr
Slett gruppe
==========================================================================
Formål:
Fjerner aktuell gruppe fra basen.
Grupper som er tatt ut fra NGIS for oppdatering blir ikke sletta fra
SOSI-filen, men de blir merka som sletta. (LC_SetNgisModus avgjør da om
disse kan leses.)
Det er ikke mulig å slette grupper fra sekvensielle filer, eller grupper
som er brukt i flater.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short sStatus r Status: UT_TRUE = OK
UT_FALSE = feil, ikke sletta
Bruk:
sStatus = LC_DelGr();
==========================================================================
SK_EntPnt_FYBA short LC_DelGr(void)
12 Tilbakeskriving av buffret info til SOSI-fil
LC_Save
Tøm skrivekøa
==========================================================================
Formål:
Skriver gruppene som ligger i skrivekø ut til SOSI-fil.
Parametre: ingen
Bruk:
LC_Save();
==========================================================================
SK_EntPnt_FYBA void LC_Save(void)
13 Reservere plass i ringbuffer
Dette er rutiner for å tildele/reservere plass til Ginfo/Koordinater
i ringbufferet, og må utføres før det legges data inn i rungbuffer
med rutiner som LC_PuGi og LC_PuTK
OBS: Aktuell datagruppe må først være lest/valgt med rutinene
LC_RxGr eller LC_NyGr.
LC_InsGiL
Skyt inn GINFO-linjer
=============================================================================
Formål:
Skyter inn linjer GINFO-delen i en gruppe.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short linje i Linjenummer linjen skal skytes inn forran.
(Lovlig: 1 til ngi+1)
short antall i Antall linjer som skal skytest inn.
short ngi r Antall GINFO-linjer i gruppen etter innskuddet.
Bruk:
ngi = LC_InsGiL(linje, antall);
=============================================================================
SK_EntPnt_FYBA short LC_InsGiL(short linje, short antall)
LC_AppGiL
Heng på en GINFO-linje
=============================================================================
Formål:
Henger på en linje i GINFO-delen i en gruppe.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short ngi r Antall GINFO-linjer i gruppen etter utvidelsen.
(Linjenumret på den tilføyde linjen.)
Bruk:
ngi = LC_AppGiL();
=============================================================================
SK_EntPnt_FYBA short LC_AppGiL()
LC_InsKoL
Skyt inn koordinatlinjer
==========================================================================
Formål:
Skyter inn linjer koordinatdelen i en gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long linje i Linjenummer linjen skal skytes inn forran.
(Lovlig: 1 til nko+1)
long antall i Antall linjer som skal skytest inn.
long nko r Antall koordinater i gruppen etter innskuddet.
Bruk:
nko = LC_InsKoL(linje, antall);
==========================================================================
SK_EntPnt_FYBA long LC_InsKoL(long linje, long antall)
LC_AppKoL
Heng på en koordinatlinje
==========================================================================
Formål:
Henger på en linje i koordinatdelen i en gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long nko r Antall koordinater i gruppen etter utvidelsen.
Bruk:
nko = LC_AppKoL();
==========================================================================
SK_EntPnt_FYBA long LC_AppKoL()
LC_DelGiL
Fjern GINFO-linjer
=============================================================================
Formål:
Fjerner linjer i GINFO-delen i en gruppe.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short linje i Første linjenummer som skal fjernes.
(Lovlig: 2 til ngi)
short antall i Antall linjer som skal fjernes.
short ngi r Antall GINFO-linjer i gruppen etter setting.
Bruk:
ngi = LC_DelGiL(linje, antall);
=============================================================================
SK_EntPnt_FYBA short LC_DelGiL(short linje, short antall)
LC_DelKoL
Fjern koordinatlinjer
=============================================================================
Formål:
Fjerner linjer koordinatdelen i en gruppe.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long linje i Første linje som skal fjernes.
(Lovlig: 1 til nko)
long antall i Antall linjer som skal fjernes.(Max resten av gruppen)
long nko r Antall koordinater i gruppen etter blanking.
Bruk:
nko = LC_DelKoL(linje, antall);
=============================================================================
SK_EntPnt_FYBA long LC_DelKoL(long linje, long antall)
14 Legge data inn i ringbuffer
Dette er rutiner for legge data inn i ringbufferet.
Rutinene arbeider mot aktuell datagruppe.
Det forutsettes at det er tildelt plass med rutinene i kapittelet foran.
(dvs: LC_AppGiL,LC_InsGiL,LC_AppKoL,LC_InsKoL)
OBS: Etter at du er ferdig mned å legge inn nytt innhold må du
lagre data med LC_WxGr.
14.1 Kopiere gruppe
LC_CopyGr
Kopier gruppe
==========================================================================
Formål:
Kopierer fra en annen gruppe inn i aktuell gruppe i buffer.
Rutinen tilsvarer put fra brukerprogram inn i bufret, men rutinen
tildeler selv nødvendig plass.
Gruppen beholder serienummer tildelt i LC_NyGr.
Geografisk-indeks blir ikke oppdatert før gruppen skrives til basen.
Enhet blir oppdatert slik at opprinnelig enhet blir bevart. Om nødvendig
legges det inn ..ENHET i GINFO.
Kvalitet og dato blir oppdatert hvis SOSI-VERSJON < 4.00.
Hvis det er filhode som kopieres skjer det ingen endring av egenskaper.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR *pBgr i Gruppenummer det skal kopieres fra.
short ngis i Behandling for ..NGIS-FLAGG:
OPPDATER_NGIS (0) = ..NGIS-FLAGG oppdateres i henhold
til hodet i filen det kopieres til.
BEVAR_NGIS (1) = ..NGIS-FLAGG bevares uforandret i kopien
short ngi u Antall linjer GINFO
long nko u Antall koordinater
unsigned short info u Diverse informasjon. (Se under LC_RxGr)
short gnavn r Gruppenavn. (Se under LC_RxGr)
Bruk:
gnavn = LC_CopyGr(&Bgr,ngis,&ngi,&nko,&info)
==========================================================================
SK_EntPnt_FYBA short LC_CopyGr (LC_BGR * pBgr,short ngis,short *ngi,long *nko,unsigned short *info)
LC_CopyCoord
Kopier koordinater fra annen gruppe
===========================================================================
Formål:
Kopierer koordinater fra en annen gruppe inn i aktuell gruppe i ringbuffer.
De kopierte koordinatene kommer som en utvidelse av gruppen.
Rutinen tilsvarer put fra brukerprogram inn i ringbufret, men rutinen
tildeler selv nødvendig plass i RB.
Geografisk-indeks blir ikke oppdatert før gruppen skrives til basen.
Kvalitet og enhet blir automatisk oppdatert slik at gruppene ikke
mister informasjon.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_BGR *pBgr i Gruppenummer det skal kopieres fra.
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snues.
long til_linje i Linjenummer linjen skal skytes inn forran.
(Lovlig: 1 til nko+1)
short ngi u Antall GINFO-linjer
long nko u Antall koordinater
short info u Diverse informasjon. (Se under LC_RxGr)
short sStatus r Status: UT_TRUE=OK, UT_FALSE=ikke utført.
Bruk:
sStatus = LC_CopyCoord(bgr,retning,til_linje,&ngi,&nko,&info);
=============================================================================
SK_EntPnt_FYBA short LC_CopyCoord(LC_BGR * pBgr,short retning,long til_linje,short *ngi,
long *nko,unsigned short *info)
14.2 Gruppeinformasjon
LC_PutGi
Put GINFO-linje
==========================================================================
Formål:
Legger inn GINFO-linje rent generellt.
Dette omfatter også nytt gruppenavn (GINFO-linje 1)
Ønsker du å endre serienummer må LC_PutSn benyttes.
Referansenummer legges inn med LC_PutRef.
Blanke på starten og slutten blir skrella vekk, og SOSI-navnet blir
konvertert til "store" bokstaver, .ellers lagres det slik det er.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short lin_nr i Linjenummer i GINFO (1 er første linje)
char *ginfo i GINFO-streng avslutta med '/0'
Bruk:
LC_PutGi(lin_nr,ginfo);
==========================================================================
SK_EntPnt_FYBA void LC_PutGi(short lin_nr, const char *pszGinfo)
LC_PutGP
Put GINFO-parameter
==========================================================================
Formål:
Legger inn et SOSI-navn med verdi.
Denne rutinen kan brukes til å legge inn ginfo med nytt SOSI-navn.
Rutinen kan endre antall ginfo-linjer.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char sosi_navn i Sosi-navn det skal legges inn verdi til
char verdi i Streng som skal legges inn.
short *linje_nr u Linjenummer for endringen.
short ngi r Ant. ginfo-linjer etter endringen.
Bruk:
ngi = LC_PutGP(sosi_navn,verdi,&linje_nr);
==========================================================================
SK_EntPnt_FYBA short LC_PutGP(const char *sosi_navn,const char *verdi,short *linje_nr)
LC_AppGP
Legg til GINFO-parameter
==========================================================================
Formål:
Legger til et SOSI-navn med verdi i GINFO.
Lik LC_PutGP, men legger alltid til ny linje i ginfo.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char sosi_navn i Sosi-navn det skal legges inn verdi til
char verdi i Streng som skal legges inn.
short *linje_nr u Linjenummer for endringen.
short ngi r Ant. ginfo-linjer etter endringen.
Bruk:
ngi = LC_AppGP(sosi_navn,verdi,&linje_nr);
==========================================================================
SK_EntPnt_FYBA short LC_AppGP(const char *sosi_navn,const char *verdi,short *linje_nr)
LC_UpdateGP
Endre GINFO-parameter
==========================================================================
Formål:
Legger inn parametren til et SOSI-navn.
Rutinen handterer at det er flere SOSI-navn på samme linje.
OBS! Denne rutinen kan ikke brukes til å legge inn nytt SOSI-navn.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short linje_nr i Linjenummer som skal endres.
char sosi_navn i Sosi-navn det skal legges inn verdi til
char verdi i Streng som skall legges inn
short ist r 1=ok, 0=navnet er ikke funnet
Bruk:
ist = LC_UpdateGP(linje_nr,sosi_navn,verdi);
==========================================================================
SK_EntPnt_FYBA short LC_UpdateGP(short linje_nr,const char *sosi_navn,const char *verdi)
LC_UpdateGiEnhet
Oppdater ..ENHET i GINFO
==========================================================================
Formål:
Setter koordinat-enhet for gruppen.
Oppdaterer ..ENHET / ..ENHET-H / ..ENHET-D i GINFO.
Rutinen handterer selv tildeling eller sletting av GINFO-linje.
Hvis verdien er lik filhodets verdi blir det ikke lagt inn verdi i GINFO.
Enhet = 0.0 = bruk filhodets enhet, og fører til at det ikke legges inn
i GINFO. Eventuell eksisterende linje jgernes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til FilAdm
double enhet i Grunnriss-enhet
double enhet_h i Høyde-enhet
double enhet_d i Dybde-enhet
ngi short r Antall GINFO-linjer etter oppdatering
Bruk:
ngi = LC_UpdateGiEnhet(pFil,enhet,enhet_h,enhet_d);
==========================================================================
SK_EntPnt_FYBA short LC_UpdateGiEnhet(LC_FILADM *pFil,double enhet,double enhet_h,double enhet_d)
LC_UpdateGiKvalitet
Oppdaterer ..KVALITET i Ginfo
==========================================================================
Formål:
Oppdaterer GINFO med ..KVALITET
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
Parametre:
LC_FILADM *pFil i Peker til FilAdm for sosifil kvalitet skal
testes mot.
short sMetode i Metode i ..KVALITET
long lNoyaktighet i Nøyaktighet i ..KVALITET
short sSynbarhet i Synbarhet i ..KVALITET
short sHoydeMetode i HøydeMetode i ..KVALITET
long lHoydeNoyaktighet i HøydeNøyaktighet i ..KVALITET
short ngi r Antall linjer i ginfo.
Bruk:
ngi = LC_UpdateGiKvalitet(pFil,sMetode,lNoyaktighet,sSynbarhet,
sHoydeMetode,lHoydeNoyaktighet);
==========================================================================
SK_EntPnt_FYBA short LC_UpdateGiKvalitet(LC_FILADM *pFil,short sMetode,long lNoyaktighet,
short sSynbarhet,short sHoydeMetode,long lHoydeNoyaktighet)
LC_UpdatePiKvalitet
Oppdaterer ...KVALITET i Pinfo
==========================================================================
Formål:
Oppdaterer PINFO med ...KVALITET
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til FilAdm for sosifil kvalitet
skal testes mot.
long pnr i Punktnummer som skal oppdateres.
short sMetode i Metode i ..KVALITET
long lNoyaktighet i Nøyaktighet i ..KVALITET
short sSynbarhet i Synbarhet i ..KVALITET
short sHoydeMetode i HøydeMetode i ..KVALITET
long lHoydeNoyaktighet i HøydeNøyaktighet i ..KVALITET
short sStatus r UT_TRUE = OK,
UT_FALSE = ikke utført (for lite plass tilgjengelig)
Bruk:
sStatus = LC_UpdatePiKvalitet(pFil,pnr,sMetode,lNoyaktighet,sSynbarhet,
sHoydeMetode,lHoydeNoyaktighet)
==========================================================================
SK_EntPnt_FYBA short LC_UpdatePiKvalitet(LC_FILADM *pFil,long pnr,short sMetode,long lNoyaktighet,
short sSynbarhet,short sHoydeMetode,long lHoydeNoyaktighet)
LC_OppdaterEndret
Oppdater ..NGIS-FLAGG
==========================================================================
Formål:
Oppdaterer ..NGIS-FLAGG i GINFO og ajourfører interne tabeller.
Hvis endring = O_GINFO oppateres tabellene i forhold til
eksisterende GINFO.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
endring short i Kode for endring:
O_GINFO (0) = Oppdater interne tabeller i fht. GINFO
O_ENDRET (1) = Merk for endret og oppdat. tab.
O_SLETTET (2) = Merk for slettet og oppdat. tab.
Bruk:
LC_OppdaterEndret(O_ENDRET);
=============================================================================
SK_EntPnt_FYBA void LC_OppdaterEndret(short endring)
LC_DelGiNavn
Fjerner egenskap fra GINFO
==========================================================================
Formål:
Fjerner alle forekomster av gitt egenskap (SOSI-navn) fra GINFO.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char *pszEgenskapNavn i SOSI-navn som skal slettes
short ngi r Antall GINFO-linjer i gruppen etter setting
Bruk:
ngi = LC_DelGiNavn("..RADIUS");
==========================================================================
SK_EntPnt_FYBA short LC_DelGiNavn(char *pszEgenskapNavn)
LC_FinnNivo
Beregn nivå
==============================================================
Formål:
Teller antall prikker i starten på egenskapsnavn.
PARAMETERLISTE:
Type Navn I/U Merknad
-------------------------------------------------------------
char *pszGinfo i Streng med egenskapsnavn i starten
short sNivo r Antall prikker
Bruk:
sNivo = LC_FinnNivo(pszGinfo);
================================================================
SK_EntPnt_FYBA short LC_FinnNivo(const char * pszNavn)
14.3 Serienummer og referansenummer
LC_PutSn
Put Serienummer
==========================================================================
Formål:
Legger inn nytt serienummer på aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long snr i Serienummer
Bruk:
LC_PutSn(snr);
==========================================================================
SK_EntPnt_FYBA void LC_PutSn(long snr)
LC_PutRef
Legger inn referanser i GINFO
==========================================================================
Formål:
Legger inn et array med referanser til GINFO i aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long ref_array i Gruppenummer for refererte grupper.
Start øy, og slutt øy angis ved fiktive gruppenr.
Følgende konstanter er definert:
START_OY = 9999999L = Start øy.
SLUTT_OY = -9999999L = Slutt øy.
long ant_ref i Antall linjer i ref_array.
short *ngi r Antall linjer GINFO
Bruk:
ngi = LC_PutRef(ref_array,ant_ref);
==========================================================================
SK_EntPnt_FYBA short LC_PutRef(long *ref_array,long ant_ref)
14.4 Koordinater
LC_PutTK
Put koordinat
==========================================================================
Formål:
Legger inn et punkts koordinater (n,ø) i meter i terreng
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double aust i Øst-koordinat i meter i terreng
double nord i Nord-koordinat i meter i terreng
Bruk:
LC_PutTK(punkt_nr,aust,nord);
==========================================================================
SK_EntPnt_FYBA void LC_PutTK(long punkt_nr,double aust,double nord)
LC_PutTH
Put høyde
==========================================================================
Formål:
Legger inn et punkts høyde i meter i terreng
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double hoyde i Høyde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har høydeverdi.
Bruk:
LC_PutTH(punkt_nr,hoyde);
==========================================================================
SK_EntPnt_FYBA void LC_PutTH(long punkt_nr, double hoyde)
LC_PutTD
Put dybde
==========================================================================
Formål:
Legger inn et punkts dybde i meter i terreng
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double hoyde i Dybde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har dybdeverdi.
Bruk:
LC_PutTD(punkt_nr,dybde);
==========================================================================
SK_EntPnt_FYBA void LC_PutTD(long punkt_nr, double dybde)
14.5 Knutepunkt
LC_PutKp
Put knutepunkt
==========================================================================
Formål:
Legger inn knutepunktverdi i punktet. Ny verdi skrives over eksisterende
verdi. (Multiple KP er ikke mulig.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
short kp i Knutepunkt (lovlig verdi 0 - SHRT_MAX)
kp == 0 fjerner knutepunkt.
Bruk:
LC_PutKp(punkt_nr,kp);
==========================================================================
SK_EntPnt_FYBA void LC_PutKp(long punkt_nr, short kp)
14.6 Punktinformasjon
LC_PutPi
Put PINFO
==========================================================================
Formål:
Legger inn hele punktinformasjonen på angitte punkt
Ny verdi skriver over eksisterende verdi.
Verdi "" fjerner eksisterende PINFO.
Knutepunkt legges inn med LC_PutKp.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
char *pinfo i PINFO-streng som skal legges inn
(Knutepunkt regnes ikke som pinfo)
short sStatus r UT_TRUE = OK,
UT_FALSE = ikke utført (for lite plass tilgjengelig)
Bruk:
sStatus = LC_PutPi(punkt_nr,pinfo);
==========================================================================
SK_EntPnt_FYBA short LC_PutPi(long punkt_nr, const char *pinfo)
15 Hente data fra ringbuffer
Dette er rutiner for hente data ut fra ringbufferet.
Rutinene arbeider mot current datagruppe.
Denne kan du ha fått inn enten ved les fra SOSI-fil eller at du er i
etableringsfasen av en ny.
15.1 Generell verdi til et SOSI-navn
I henhold til den generelle mekanisme på SOSI-fila hvor info kan
være enten i HODE ,GINFO eller PINFO er det behov for rutine som går
over det hele for å finne aktuell verdi for denne gruppa
Det tenkes her spesiellt på kavlitetsopplysninger, dato etc.
15.2 Gruppeinformasjon
LC_GetGi
Get GINFO-linje
==========================================================================
Formål:
Henter en GINFO-linje som en streng rent generellt.
Dette omfatter også serienummer og referansenummer.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk strcpy).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short lin_nr i Linjenummer i GINFO (1 er første linje)
char *ginfo r Peker til GINFO-streng avslutta med '/0'
Bruk:
ginfo = LC_GetGi(lin_nr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetGi(short lin_nr)
LC_GetGP
Get GINFO-parameter
==========================================================================
Formål:
Henter parametrene til et SOSI-navn.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
Leddnummer, delstreng,skilletegn og formateringskode kan inngå som
forlengelse av SOSI-navnet.
Leddnummer for flerleddet parameter angis ved #n.
Eks: ..GID#2 er bruksnummer.
Delstreng angis ved: [start:slutt].
NB! 1 er første tegn.
Sluttposisjon 0 betyr at resten av strengen skal brukes.
Eks: ..STRENG[2:0] Posisjon 2 og resten av strengen.
Skilletegn for flerleddet GINFO. Dette angis ved ^x hvor x er det tegnet
som skal skrives ut mellom leddene.
Formateringskode. Dette brukes for å angi plassering av komma og antall
desimaler i desimaltall.
Eks: ..AREAL%-3.2 Betyr at ..AREAL fra GINFO skal formateres slik:
Komma flyttes 3 posisjoner til venstre (divisjon med tusen) og resultatet
presenteres avrundet til 2 desimaler.
Eks: ..DYBDE£-1.2 Betyr at ..DYBDE fra GINFO skal formateres slik:
Komma flyttes 1 posisjon til venstre (divisjon med ti) og resultatet
presenteres med 2 desimaler uten avrunding. Spesielt for dybdeverdier.
Disse tilleggene kan kombineres, slik at ..GID#2[1:2] betyr at det er
tegn nummer 1 og 2 i det andre leddet (bruksnumret) som skal brukes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char sosi_navn i SOSI-navn det skal finnes verdi til.
Leddnummer, posisjon, skilletegn
og formateringskode kan inngå
som forlengelse av navnet.
OBS! Store og små bokstaver er signifikante.
short *forste_linje iu GINFO-linjenummer for start søking
(1 er første linje i GINFO.)
Ved tilslag returneres linjenummer for tilslaget.
short siste_linje i Siste GINFO-linje det skal søkes i.
char *para_peker r Peker til parameter-streng avslutta med '/0'.
Hvis SOSI-navnet ikke er funnet returneres NULL.
Bruk:
para_peker = LC_GetGP(sosi_navn,&forste_linje,siste_linje);
==========================================================================
SK_EntPnt_FYBA char *LC_GetGP(const char *sosi_navn,short *forste_linje,short siste_linje)
15.3 Serienummer og referansenummer
LC_GetSn
Get serienummer
==========================================================================
Formål:
Henter serienummer for aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------
long snr r Serienr. (INGEN_GRUPPE = ingen aktuell gruppe)
Bruk:
snr = LC_GetSn();
==========================================================================
SK_EntPnt_FYBA long LC_GetSn(void)
LC_GetRef
Hent referanser fra GINFO
==========================================================================
Formål:
Henter ut et array med referanser fra GINFO i aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long *ref_array u Serienr. for refererte grupper.
Start øy, og slutt øy angis ved fiktive gruppenr.
Følgende konstanter er definert:
START_OY = 9999999L = Start øy.
SLUTT_OY = -9999999L = Slutt øy.
long max_ref i Max antall linjer i ref_array.
short *gilin i/u linje for start referanselesing
short *refpos i/u posisjon i linja for neste innlegging i array.
long ant_ref r Antall linjer brukt i ref_array.
Bruk:
ant_ref = LC_GetRef(ref_array,max_ref,&gilin,&refpos);
==========================================================================
SK_EntPnt_FYBA long LC_GetRef(long *ref_array,long max_ref,short *gilin,short *refpos)
LC_InqAntRef
Spørr om antall referanser
==========================================================================
Formål:
Spørr om antall referanser i GINFO i aktuell gruppe.
Dette kallet kan brukes til å finne hvor stor array som må allokeres før
kall til LC_GetRef.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long ant_ref r Antall referanser i GINFO.
OBS! Start- og sluttparantes for øy blir regnet
som egne referanser.
Bruk:
long lAntRef;
short sGiLin,sRefPos;
long *plRefArray;
lAntRef = LC_InqAntRef();
plRefArray = (long *) UT_MALLOC(lAntRef * sizeof(long));
sGiLin = 2;
sRefPos = 0;
LC_GetRef(plRefArray,lAntRef,&sGiLin,&sRefPos);
==========================================================================
SK_EntPnt_FYBA long LC_InqAntRef(void)
LC_InitGetRefFlate
Initierer status for GetRefFlate
==========================================================================
Formål:
Initierer status for GetRefFlate.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GRF_STATUS * pRefStat iu Struktur med statusopplysninger.
Bruk:
LC_InitGetRefFlate(pGrfStat,pBgr);
==========================================================================
SK_EntPnt_FYBA void LC_InitGetRefFlate(LC_GRF_STATUS * pGS)
LC_GetRefFlate
Hent referanser for flate fra GINFO
==========================================================================
Formål:
Henter ut et array med referanser for flate fra GINFO i aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
-------------------------------------------------------------------------
LC_GRF_STATUS * GrfStat iu Struktur med statusopplysninger.
unsigned short usHent i Hva skal hentes:
GRF_YTRE = Ytre avgrensing
GRF_INDRE = Indre avgrensing, øyer
(kan kombineres med | (or).)
long *ref_array u GRUPPENUMMER for refererte grupper.
unsigned char *ref_status u Status for gruppene i ref_array.
LC_MED_DIG = Brukes MED dig retning.
LC_MOT_DIG = Brukes MOT dig retning.
GRF_START_OY = Første gruppe i øy
GRF_SLUTT_OY = Siste gruppe i øy
long max_ref i Max antall linjer i ref_array og ref_status.
long ant_ref r Antall linjer brukt i ref_array.
0 viser at hele flata er behandla.
Bruk:
#define MAX_REF 20
long ref_arr[MAX_REF];
char ref_status[MAX_REF];
long ant_ref;
LC_GRF_STATUS GrfStat;
LC_InitGetRefFlate(&GrfStat);
ant_ref = LC_GetRefFlate(&GrfStat,GRF_YTRE,ref_arr,ref_status,MAX_REF);
do {
if (ant_ref > 0) {
.
Behandle ytre avgrensing
.
}
[if (ant_ref < MAX_REF) break;]
ant_ref = LC_GetRefFlate(&GrfStat,GRF_YTRE,ref_arr,ref_status,MAX_REF);
} while (ant_ref > 0);
LC_InitGetRefFlate(&GrfStat);
ant_ref = LC_GetRefFlate(&GrfStat,GRF_INDRE,ref_arr,ref_status,MAX_REF);
do {
if (ant_ref > 0) {
.
Behandle indre avgrensing (øy)
.
}
[if (ant_ref < MAX_REF) break;]
ant_ref = LC_GetRefFlate(&GrfStat,GRF_INDRE,ref_arr,ref_status,MAX_REF);
} while (ant_ref > 0);
==========================================================================
SK_EntPnt_FYBA long LC_GetRefFlate(LC_GRF_STATUS * GrfStat,unsigned short usHent,long *ref_array,
unsigned char *ref_status,long max_ref)
LC_ErLinjeRefLin
Sjekk om linje inneholder referanser
=======================================================================
Bruk:
sRefLin = LC_ErLinjeRefLin(gp,sRefLin);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
char *pszGinfoLin i Peikar til GINFO-linje
short sRefLin i Flagg som viser om forrige linje inneholdt referanser
short sRefLin r Flagg som viser om aktuell linje inneholdt referanser
Sjekk om linje er linje med referanser.
=======================================================================
short LC_ErLinjeRefLin(char *pszSosiLin, short sRefLin)
15.4 Spesielle get-rutiner
LC_GetBuePar
Beregner parametre som definerer sirkelbue
============================================================================
Formål: fi
Sirkelbue defineres i SOSI ved en av /
geometrielementene .SIRKEL, .SIRKELP, /
.BUE, .BUEP. / /
Denne rutina regner om til en intern as, ns * -radius- ) dfi
bueangivelse med sirkelsentrum, radius / /
og retning til buens startpunkt samt /
delta for sluttpunktet uansett hvordan /
buen er definert i SOSI.
NB! Alle retninger i radianer, 0-retning i øst-aksen og positiv
omløpsretning mot urviseren.
Parametre:
Type Navn I/U Forklaring
----------------------------------------------------------------------------
short buff_retning i Buffer-retning (kun for BUE og BUEP)
HENT_FORRFRA (1) = Vanlig
HENT_BAKFRA (-1) = Buffer skal snues
double *as u Øst-koordinat sentrum sirkelbue
double *an u Nord-koordinat sentrum sirkelbue
double *radius u Radius i sirkelbue.
double *fi u Retningsvinkel sentrum -> startpunkt bue
double *dfi u Vinkel mellom fi og sentrum -> sluttpunkt bue
dfi > 0 = Positiv omløpsretning(mot klokka)
dfi < 0 = Negativ omløpsretning(med klokka)
short *sfeil u Feilstatus, definert dersom ist = 0
1 = Ulovlig geometritype(ikke bue)
2 = Feil ved beregning av bueparametre
short ist r Returstatus
UT_TRUE = Alt OK
UT_FALSE = Feil, se returvariabel sfeil
Bruk:
ist = LC_GetBuePar(buff_retning, &as, &ns, &radius, &fi, &dfi, &sfeil )
============================================================================
SK_EntPnt_FYBA short LC_GetBuePar(short buff_retning, double *as, double *ns, double *radius,
double *fi, double *dfi, short *sfeil)
LC_GetBue
Hent bue
==========================================================================
Formål:
Henter ut nødvendige opplysninger om en bue.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snues.
double *a1 u Koordinat i første punkt
double *n1 u
double *a2 u Koordinat i siste punkt
double *n2 u
double *radius u Radius
short *storbue u 0=vanlig bue, 1=storbue
short ist r status: UT_TRUE = OK,
UT_FALSE = feil (Gruppen er ikke OK bue)
Bruk:
ist = LC_GetBue(retning,&a1,&n1,&a2,&n2,&radius,&storbue);
==========================================================================
SK_EntPnt_FYBA short LC_GetBue(short retning,double *a1,double *n1,double *a2,double *n2,
double *radius,short *storbue)
LC_GetBuep
Hent buep
==========================================================================
Formål:
Henter ut nødvendige opplysninger om en buep.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snues.
double *a1 u Koordinat i første punkt
double *n1 u
double *a2 u Koordinat i midtre punkt
double *n2 u
double *a3 u Koordinat i siste punkt
double *n3 u
short ist r status: UT_TRUE = OK,
UT_FALSE = feil (Gruppen er ikke OK buep)
Bruk:
ist = LC_GetBuep(retning,&a1,&n1,&a2,&n2,&a3,&n3);
==========================================================================
SK_EntPnt_FYBA short LC_GetBuep(short retning,double *a1,double *n1,double *a2,double *n2,
double *a3,double *n3)
LC_GetSirkel
Hent silkel
==========================================================================
Formål:
Henter ut nødvendige opplysninger om en sirkel.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double *as u Koordinat i sentrum
double *ns u
double *radius u Radius
short ist r status: UT_TRUE = OK,
UT_FALSE = Feil (Gruppen er ikke OK sirkel)
Bruk:
ist = LC_GetSirkel(&as,&ns,&radius);
==========================================================================
SK_EntPnt_FYBA short LC_GetSirkel(double *as,double *ns,double *radius)
LC_GetSirkelp
Hent silkelp
==========================================================================
Formål:
Henter ut nødvendige opplysninger om en sirkelp.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double *a1 u Koordinat i P1
double *n1 u
double *a2 u Koordinat i P2
double *n2 u
double *a3 u Koordinat i P3
double *n3 u
short ist r status: UT_TRUE = OK,
UT_FALSE = Feil (Gruppen er ikke OK sirkelp)
Bruk:
ist = LC_GetSirkelp(&a1,&n1,&a2,&n2,&a3,&n3);
==========================================================================
SK_EntPnt_FYBA short LC_GetSirkelp(double *a1,double *n1,double *a2,double *n2,
double *a3,double *n3)
LC_GetKvalitet
Finner kvalitetsopplysninger
==========================================================================
Formål:
Finne kvalitetsopplysninger i filhode eller vanlig gruppe.
(Tolker aktuell gruppe.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short *psMetode u Hvordan data er registrert.
KVAL_MET_UNDEF metode er udefinert.
KVAL_MET_STD standard metode fra nivå over.
long *pLNnoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
KVAL_NOY_STD standard nøyaktighet fra nivå over
short *psSynbarhet u Synbarhet i bilde
KVAL_SYN_UNDEF synbarhet er udefinert.
KVAL_SYN_STD standard metode fra nivå over.
short *psHoydeMetode u Hvordan høyden er registrert.
KVAL_MET_UNDEF metode er udefinert.
KVAL_MET_STD standard metode fra nivå over.
long *plHoydeNoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
KVAL_NOY_STD standard nøyaktighet fra nivå over
short ist r Status: UT_TRUE = OK, ..KVALITET er funnet
UT_FALSE = ikke funnet
Bruk:
ist = LC_GetKvalitet(&sMetode,&lNoyaktighet,&sSynbarhet,
&sHoydeMetode,&lHoydeNoyaktighet);
==========================================================================
SK_EntPnt_FYBA short LC_GetKvalitet(short *psMetode,long *plNoyaktighet,short *psSynbarhet,
short *psHoydeMetode,long *plHoydeNoyaktighet)
15.5 Koordinater
LC_GetTK
Get koordinat
==========================================================================
Formål:
Henter et punkts koordinater (ø,n) i meter i terreng
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double *aust u Øst-koordinat i meter i terreng
double *nord u Nord-koordinat i meter i terreng
Bruk:
LC_GetTK(punkt_nr,&aust,&nord);
==========================================================================
SK_EntPnt_FYBA void LC_GetTK(long punkt_nr,double *aust,double *nord)
LC_GetArrayTK
Hent tabell med koordinater
==========================================================================
Formål:
Henter tabell med koordinater (ø,n) i meter i terreng
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snues.
long max_antall i Max antall punkt som kan hentes
long fra_punkt i Fra punktnummer (1 eller nko er første punkt)
double *aust u Peker til tab. for øst-koordinater
double *nord u Peker til tab. for nord-koordinater
long *antall u Antall punkt hentet
Bruk:
LC_GetArrayTK(retning,max_antall,fra_punkt,aust,nord,&lest);
==========================================================================
SK_EntPnt_FYBA void LC_GetArrayTK(short retning,long max_antall,long fra_punkt,
double *aust,double *nord,long *antall)
LC_GetTH
Get høyde
==========================================================================
Formål:
Henter et punkts høyde i meter i terreng. (Henter BARE FRA PUNKTET.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double *hoyde r Høyde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har høydeverdi.
Bruk:
hoyde = LC_GetTH(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetTH(long punkt_nr)
LC_GetArrayTH
Hent tabell med høyder
==========================================================================
Formål:
Henter tabell med høyder
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snues.
long max_antall i Max antall punkt som kan hentes
long fra_punkt i Fra punktnummer (1 eller nko er første punkt)
double *aust u Peker til tab. for høyder
long *antall u Antall punkt hentet
Bruk:
LC_GetArrayTH(retning,max_antall,fra_punkt,hoyde,&lest);
==========================================================================
SK_EntPnt_FYBA void LC_GetArrayTH(short retning,long max_antall,long fra_punkt,
double *hoyde,long *antall)
LC_GetHoyde
Get høyde
==========================================================================
Formål:
Henter et punkts høyde i meter i terreng. (Henter fra punktet eller fra
GINFO.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double *hoyde r Høyde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har høydeverdi.
Bruk:
hoyde = LC_GetHoyde(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetHoyde(long punkt_nr)
LC_GetTD
Get dybde
==========================================================================
Formål:
Henter et punkts dybde i meter i terreng. (Henter BARE FRA PUNKTET.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double *dybde r Dybde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har dybdeverdi.
Bruk:
dybde = LC_GetTD(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetTD(long punkt_nr)
LC_GetDybde
Get dybde
==========================================================================
Formål:
Henter et punkts dybde i meter i terreng. (Henter fra punktet eller fra
GINFO.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
double *hoyde r Dybde i meter i terreng. Konstanten
HOYDE_MANGLER (-999.999) angir at punktet ikke
har høydeverdi.
Bruk:
dybde = LC_GetHoyde(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetDybde(long punkt_nr)
15.6 Knutepunkt
LC_GetKp
Get knutepunkt
==========================================================================
Formål:
Henter knutepunktverdi i punktet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
short kp_type r Knutepunkttype (1-4095)
(0 = punktet har ikke knutepunkt)
Bruk:
kp = LC_GetKp(punkt_nr);
==========================================================================
SK_EntPnt_FYBA short LC_GetKp(long punkt_nr)
LC_FinnKp
Finn knutepunkt
==========================================================================
Formål:
Skanner gruppe, og finner punkt som er knutepunkt.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long *forste_punkt iu Punktnummer for start søking.
(1 er første punkt i gruppen.)
Ved tilslag returneres punktnummer for tilslaget.
long siste_punkt i Siste punkt det skal søkes i.
short *kp u Knutepunkt.
short status r Søkestatus (1=funnet, 0=ikke funnet)
Bruk:
status = LC_FinnKp(&forste_punkt,siste_punkt,kp);
==========================================================================
short LC_FinnKp(long *forste_punkt,long siste_punkt,short *kp)
15.7 Punktinformasjon
LC_GetPi
Get PINFO
==========================================================================
Formål:
Henter punktinformasjon i angitte punkt som en streng.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk strcpy).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
char *pinfo r Peker til punktinformasjon eksklusiv knutepunkt
Bruk:
pinfo = LC_GetPi(punkt_nr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetPi(long punkt_nr)
LC_InitPP
Initier PINFO-søk
==========================================================================
Formål:
Initierer søk etter PINFO.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char sosi_navn i Sosi-navn det skal finnes verdi til
long forste_punkt i Første punkt. (1 er første pkt i gr)
long siste_punkt i Siste punkt det skal søkes i
LC_GETPP_STATUS pp_stat iu Struktur med statusvariabler. Denne er
bare for intern bruk i InitPP / GetPP.
Bruk:
Se under LC_GetPP.
==========================================================================
SK_EntPnt_FYBA void LC_InitPP(char *sosi_navn,long forste_punkt,long siste_punkt,
LC_GETPP_STATUS *pp_stat)
LC_GetPP
Utfør PINFO-søk
==========================================================================
Formål:
Henter parametrene til et SOSI-navn definert i LC_InitPP.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk strcpy).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long *punkt u Ved tilslag returneres punktnummer for
tilslaget.
LC_GETPP_STATUS pp_stat iu Struktur med statusvariabler. Denne er
bare for intern bruk i InitPP / GetPP.
char *para_peker r Peker til para.-streng avslutta med '/0'.
Hvis ingenting er funnet returneres NULL.
Bruk:
.
LC_GETPP_STATUS pp_stat;
.
LC_InitPP(sosi_navn,forste_punkt,siste_punkt,pp_stat);
para_peker = LC_GetPP(&punkt,pp_stat);
.
=============================================================================
SK_EntPnt_FYBA char *LC_GetPP(long *punkt,LC_GETPP_STATUS *pp_stat)
LC_GetPiVerdi
Get PINFO-verdi
==========================================================================
Formål:
Henter parametrene til et SOSI-navn.
Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
Leddnummer, delstreng og formateringskode kan inngå som
forlengelse av SOSI-navnet.
Leddnummer for flerleddet parameter angis ved #n.
Eks: ...KVALITET#2 er nøyaktighet.
Delstreng angis ved: [start:slutt].
NB! 1 er første tegn.
Sluttposisjon 0 betyr at resten av strengen skal brukes.
Eks: ..STRENG[2:0] Posisjon 2 og resten av strengen.
Formateringskode kan angi skilletegn for flerleddet PINFO. Dette
angis ved ^x hvor x er det tegnet som skal skrives ut mellom leddene.
Disse tilleggene kan kombineres, slik at ...KVALITET#2[1:2] betyr at
det er tegn nummer 1 og 2 i det andre leddet (nøyaktigheten) som skal
brukes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
char pszSosiNavn i SOSI-navn det skal finnes verdi til.
Leddnummer posisjon og formateringskode kan
inngå som forlengelse av navnet.
OBS! Store og små bokstaver er signifikante.
HØYDE er spesialverdi som henter formatert
høyde fra punktet eller GINFO.
KVALITET er spesialverdi som henter formatert
kvalitet fra punktet, GINFO eller hode.
long lPnr i Punktnummer
short *sSettNr iu PINFO-nummer (1 er første sett i PINFO.)
Ved tilslag returneres settnummer for tilslaget.
char *pszVerdi r Peker til verdien avslutta med '/0'.
Hvis SOSI-navnet ikke er funnet returneres NULL.
Bruk:
pszVerdi = LC_GetPiVerdi(pszSosiNavn,lPnr,&sSettNr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetPiVerdi(const char *pszSosiNavn,long lPnr,short *sSettNr)
LC_TestPi
Sjekk om punkt har PINFO
==========================================================================
Formål:
Sjekker om et punkt har PINFO i en eller annen form.
(PINFO, KP, høyde.)
Høyde handteres ikke foreløpig.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
short sTestHoyde i Bryter for å si om høyde skal regnes med i sjekken.
short sStatus r UT_TRUE=har "pinfo", UT_FALSE=har ikke "pinfo"
Bruk:
sStatus = LC_TestPi(punkt_nr,UT_TRUE);
==========================================================================
SK_EntPnt_FYBA short LC_TestPi(long punkt_nr,short sTestHoyde)
15.8 Spesielle henteoperasjoner
LC_GetCurEnhet
Hent enhet på angitt nivå
==========================================================================
Formål:
Henter ut enhet fra filhode eller GINFO
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til FilAdm
short *nivaa iu angir nivå for henting, returnerer aktuelt nivå
1 = filhode
2 = GINFO
double *enhet u Aktuell enhet
double *enhet_h u Aktuell enhet-H
double *enhet_d u Aktuell enhet-D
Bruk:
LC_GetCurEnhet(pFil,&nivaa,&enhet,&enhet_h,&enhet_d);
==========================================================================
SK_EntPnt_FYBA void LC_GetCurEnhet(LC_FILADM * pFil,short *nivaa, double *enhet,
double *enhet_h, double *enhet_d)
LC_GetCurKvalitet
Finner kvalitetsopplysninger på angitt nivå
==========================================================================
Formål:
Finne kvalitetsopplysninger på angitt nivå, hode ginfo eller pinfo.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM * pFil i Peker til FilAdm
short *nivaa iu Hvor skal det letes.
0 = ikke funnet
1 = hode
2 = ginfo
3 = pinfo
Returnerer aktuelt nivå.
long pnr i punktnr. ved spørring på pinfo
short *psMetode u Hvordan data er registrert.
KVAL_MET_UNDEF metode er udefinert.
long *pLNnoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
short *psSynbarhet u Synbarhet i bilde
KVAL_SYN_UNDEF synbarhet er udefinert.
short *psHoydeMetode u Hvordan høyden er registrert.
KVAL_MET_UNDEF metode er udefinert.
long *plHoydeNoyaktighet u Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
short ist r Statusvariabel:
UT_TRUE = OK, KVALITET er funnet
UT_FALSE = KVALITET er ikke funnet
Bruk:
ist = LC_GetCurKvalitet(pFil,&nivaa,pnr,&sMetode,&lNoyaktighet,
&sSynbarhet,&sHoydeMetode,&lHoydeNoyaktighet);
==========================================================================
SK_EntPnt_FYBA short LC_GetCurKvalitet(LC_FILADM *pFil,short *nivaa,long pnr,
short *psMetode,long *plNoyaktighet,short *psSynbarhet,
short *psHoydeMetode,long *plHoydeNoyaktighet)
LC_GetObjtypeBgr
Hent objekttype
=============================================================================
Formål:
Henter objekttype for gitt gruppenummer.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_BGR *pBgr i Gruppenummer det ønskes opplysninger om.
char *pszObjtype r OBJTYPE
NULL hvis gruppen ikke finnes
Bruk:
pszObjtype = LC_GetObjtypeBgr(pBgr);
=============================================================================
SK_EntPnt_FYBA const char *LC_GetObjtypeBgr(LC_BGR * pBgr)
LC_GetElementNavn
Hent elementnavn
==========================================================================
Formål:
Hent et elementnavn fra den interne navnetabellen i FYBA.
Denne tabellen inneholder både gruppenavn (.LINJE, .KURVE, ...) og
egenskapsnavn (..OBJTYPE, ..LTEMA, ...)
Tabellen har tre logiske deler:
- (Linje 0 - L_HODE): Forhåndsdefinerte gruppenavn.
- (Linje L_HODE+1 - L_KP): Forhåndsdefinerte egenskapsnavn.
- (Linje L_KP+1 - n): Andre elementnavn brukt i SOSI-filen etter
indeksoppbygging.
Selv om egenskapen blir fjernet fra SOSI-filen blir navnet fortsatt
liggende i navnetabellen
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short sNavnNr i Linjenummer i navnetabellen (0 - n)
bool *bBrukt Viser om navnet har/er brukt i filen
Hvis det har vært en gruppe som har brukt navnet blir
denne stående "true" selv om gruppen er slettet.
const char *pszNavn r Peker til elementnavn,
NULL = ukjent fil eller ulovlig linjenummer
Bruk:
// Går gjennom alle navnene ut over de forhåndsdefinerte navnene.
short sNavnNr = L_KP+1;
while ((pszNavn = LC_GetElementNavn(pFil,sNavnNr)) != NULL)
{
// Gjør noe med navnet
...
++sNavnNr;
}
=============================================================================
SK_EntPnt_FYBA const char *LC_GetElementNavn(LC_FILADM *pFil,short sNavnNr,bool *bBrukt)
16 Blaing i basen
LC_InitNextFil
Initier finn neste fil
==========================================================================
Formål:
Initierer pFil for bruk i finn neste fil.
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
LC_FILADM **ppFil u Peker til FilAdm-peker
Bruk:
LC_InitNextFil(&pFil)
==========================================================================
SK_EntPnt_FYBA void LC_InitNextFil(LC_FILADM **ppFil)
LC_NextFil
Finn neste fil
==========================================================================
Formål:
Finn neste fil i aktuell base.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM **ppFil iu Peker til FilAdm-peker
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR, LC_BAKGR og /eller LC_SEKV
(Bruk "|" for å kombinere.)
short sStatus r Status UT_TRUE=OK, UT_FALSE=ingen flere funnet
Bruk:
LC_FILADM *pFil;
Denne løkka går gjennom alle framgrunns-filene i basen
LC_InitNextFil(&pFil)
while (LC_NextFil(&pFil,LC_FRAMGR)) {
pszFilNavn = LC_GetFiNa(pFil);
.
Behandle filnavnet
.
}
==========================================================================
SK_EntPnt_FYBA short LC_NextFil(LC_FILADM **ppFil,unsigned short usLag)
LC_InitNextBgr
Initier finn neste gruppe
==========================================================================
Formål:
Initierer Bgr for bruk i finn neste gruppe.
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
LC_BGR * pBgr iu Peker til gruppestruktur
Bruk:
LC_InitNextBgr(&Bgr)
==========================================================================
SK_EntPnt_FYBA void LC_InitNextBgr(LC_BGR * pBgr)
LC_NextBgr
Finn neste gruppe
==========================================================================
Formål:
Finn neste gruppe i aktuell base.
Sekvensielle filer blir ikke håndtert.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pBgr iu Peker til gruppestruktur der gruppenummer lagres
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
(Bruk "|" for å kombinere.)
short sStatus r Status UT_TRUE=OK, UT_FALSE=ingen flere grupper
Bruk:
LC_BGR Bgr;
Denne løkka går gjennom alle framgrunns-gruppene i basen
LC_InitNextBgr(&Bgr);
while (LC_NextBgr(&Bgr,LC_FRAMGR)) {
gnavn = LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
.
Behandle gruppen
.
}
==========================================================================
SK_EntPnt_FYBA short LC_NextBgr(LC_BGR * pBgr,unsigned short usLag)
17 Geografisk søking
LC_GetGrWin
Hent omskrevet rektangel for gruppe
==========================================================================
Formål:
Henter omskrevet rektangel for gitt gruppe.
For flater er refererte grupper medregnet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pBgr i Gruppenummer
double *nva u Omskrevet rektangel for gruppen. Avrundet utover
double *nvn u en enhet.
double *oha u
double *ohn u
short ist r Status. UT_TRUE=OK, UT_FALSE=ulovlig gruppenummer.
Bruk:
ist = LC_GetGrWin(&Bgr,&nva,&nvn,&oha,&ohn);
==========================================================================
SK_EntPnt_FYBA short LC_GetGrWin(LC_BGR * pBgr,double *nva,double *nvn,double *oha,double *ohn)
LC_SBFlate
Sett søkegrense for geografisk søk på flate
=============================================================================
Formål:
Definerer punkt for geografisk søk på flate.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
double nv_a i Koordinat nedre venstre hjørne
double nv_n i
double oh_a i Koordinat øvre høyre hjørne
double oh_n i
Bruk:
LC_GEO_STATUS GeoStat;
.
LC_SBFlate(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
if (LC_FFFlate(&GeoStat,&Bgr)) {
do{
. Behandle funnet gruppe
.
} while (LC_FNFlate(&GeoStat,&Bgr));
}
LC_AvsluttSok(&GeoStat);
.
=============================================================================
SK_EntPnt_FYBA void LC_SBFlate(LC_GEO_STATUS * pGeoStat,unsigned short usLag,
double nv_a,double nv_n,double oh_a,double oh_n)
LC_FFFlate
Finn første ved flatesøk
=============================================================================
Formål:
Finner første gruppe i det definerte området for flatesøk.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBFlate.
=============================================================================
SK_EntPnt_FYBA short LC_FFFlate(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
LC_FNFlate
Finn neste ved flatesøk
==========================================================================
Formål:
Finner neste gruppe i det definerte området for flatesøk.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBFlate.
==========================================================================
SK_EntPnt_FYBA short LC_FNFlate(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
LC_SBGeo
Sett søkegrense for grov geografisk søk
=============================================================================
Formål:
Definerer geografisk område for geografisk søk.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus.
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
double nv_a i Koordinat nedre venstre hjørne.
double nv_n i
double oh_a i Koordinat øvre høyre hjørne.
double oh_n i
Bruk:
LC_GEO_STATUS GeoStat;
.
LC_SBGeo(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
if (LC_FFGeo(&GeoStat,&Bgr)) {
do{
. Behandle funnet gruppe
.
} while (LC_FNGeo(&GeoStat,&bgr));
}
LC_AvsluttSok(&GeoStat);
.
=============================================================================
SK_EntPnt_FYBA void LC_SBGeo(LC_GEO_STATUS * pGeoStat,unsigned short usLag,
double nv_a,double nv_n,double oh_a,double oh_n)
LC_FFGeo
Finn første ved geografisk søk
==========================================================================
Formål:
Finner første gruppe i det definerte området for kombinert geografisk søk.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBGeo.
==========================================================================
SK_EntPnt_FYBA short LC_FFGeo(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
LC_FNGeo
Finn neste ved geografisk søk
==========================================================================
Formål:
Finner neste gruppe i det definerte området for geografisk søk.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBGeo.
==========================================================================
SK_EntPnt_FYBA short LC_FNGeo(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
LC_FAGeo
Finn alle ved geografisk søk
==========================================================================
Formål:
Finn alle i geografisk søkeområde.
Tilslag merkes i brukttabellen kolonne BT_GEOSOK (15).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
long lAntall r Antall funnet.
Bruk:
.
LC_SBGeo(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
antall = LC_FAGeo(&Bgr);
.
=============================================================================
SK_EntPnt_FYBA long LC_FAGeo(LC_GEO_STATUS * pGeoStat)
LC_FFGeoFil
Finn første ved geografisk søk i en fil
==========================================================================
Formål:
Finner første gruppe i det definerte området for kombinert geografisk søk.
Søker bare i en gitt fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_FILADM * pOnsketFil i Filpeker til den filen det skal søkes i.
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBGeo.
==========================================================================
SK_EntPnt_FYBA short LC_FFGeoFil(LC_GEO_STATUS * pGeoStat,LC_FILADM *pOnsketFil,LC_BGR * pBgr)
LC_FNGeoFil
Finn neste ved geografisk søk i en fil
==========================================================================
Formål:
Finner neste gruppe i det definerte området for geografisk søk.
Søker bare i en gitt fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
LC_FILADM * pFil i Filpeker til den filen det skal søkes i.
LC_BGR * pBgr u Funnet gruppe
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
Se under LC_SBGeo.
==========================================================================
SK_EntPnt_FYBA short LC_FNGeoFil(LC_GEO_STATUS * pGeoStat,LC_FILADM *pFil,LC_BGR * pBgr)
LC_AvsluttSok
Avslutter geografisk søk
=======================================================================
Bruk:
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat i Peker til struktur for søkestatus
Formål:
Avslutter geografisk søk, og frigir kjede med søkeresultat.
=======================================================================
SK_EntPnt_FYBA void LC_AvsluttSok(LC_GEO_STATUS * pGeoStat)
LC_WTst
Vindustest
==========================================================================
Formål:
Sjekk om aktuell gruppe berører gitt vindu.
Tar hensyn til gruppenavnet. Handterer (PUNKT, LINJE, KURVE, BUE,
BUEP, SIRKEL, SIRKELP, SVERM, TRASE ).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double nva i Avgrensing av vinduet
double nvn i
double oha i
double ohn i
short ist r status: 0 = ikke berøring
1 = skjæring
Bruk:
.
LC_SBGeo(&GeoStat,nv_a,nv_n,oh_a,oh_n);
if (LC_FFGeo(&GeoStat,&Bgr)){
do{
LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
if (LC_WTst(nv_a,nv_n,oh_a,oh_n)) { (Nøyaktig vindustest)
. Behandle funnet gruppe
.
}
} while (LC_FNGeo(&GeoStat,&Bgr));
}
LC_AvsluttSok(&GeoStat);
.
==========================================================================
SK_EntPnt_FYBA short LC_WTst(double nva,double nvn,double oha,double ohn)
LC_PTst
Polygontest
==========================================================================
Formål:
Sjekker om gitt punkt ligger innenfor polygon angitt av aktuell gruppe.
Forutsetter at tabellen danner et lukket polygon
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double a i Punkt som skal sjekkes
double n i
short ist r status: 0 = punktet er utenfor flaten
1 = punktet ligger inne på flaten
Bruk:
.
LC_SBFlate(&GeoStat,a-d,n-d,a+d,n+d);
if (LC_FFFlate(&GeoStat,&Bgr)) {
do{
LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
if (LC_PTst(a,n)){ (Nøyaktig polygontest)
. Behandle funnet gruppe
.
}
} while (LC_FNFlate(&GeoStat,&Bgr));
}
LC_AvsluttSok(&GeoStat);
.
==========================================================================
SK_EntPnt_FYBA short LC_PTst(double a,double n)
LC_PTstOmkrets
Sjekk om punkt ligger inni polygon
==========================================================================
Formål:
Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
av aktuell gruppe.
Forutsetter at tabellen danner et lukket polygon
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double a i Punkt som skal sjekkes
double n i
short ist r status: 0 = punktet er utenfor flaten
1 = punktet ligger inne på flaten
Bruk:
ist = LC_PTstOmkrets(a,n);
==========================================================================
SK_EntPnt_FYBA short LC_PTstOmkrets(double a,double n)
18 Serienummer-søking
LC_SBSn
Sett søkegrense for serienummer
==========================================================================
Formål:
Setter søkegrenser for serienummersøk.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
LC_FILADM * pFil i Peker til FilAdm
long lMinSnr i Fra og med serienummer
long lMaxSnr i Til og med serienummer
Bruk:
LC_SNR_ADM SnrAdm;
LC_SBSn(&SnrAdm,pFil,lMinSnr,lMaxSnr);
=============================================================================
SK_EntPnt_FYBA void LC_SBSn(LC_SNR_ADM * pSnrAdm,LC_FILADM *pFil,long lMinSnr,long lMaxSnr)
LC_MoveSn
Flytt til gruppenummer for et serienummer
==========================================================================
Formål:
Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
Intern "aktuellt serienummer" blir endret, slik at videre søk med
neste/forrige nå tar utgangspunkt i dette serienummer.
(Bare hvis snr er funnet).
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
long lSnr i Serienummer som skal finnes
LC_BGR *pBgr u Gruppenummer i basen
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_MoveSn(pSnrAdm,snr,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_MoveSn(LC_SNR_ADM * pSnrAdm,long lSnr,LC_BGR * pBgr)
LC_FiSn
Finn gruppenummer for et serienummer
==========================================================================
Formål:
Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
Endrer IKKE "current gruppe".
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
long lSnr i Serienummer som skal finnes
LC_BGR *pBgr u Gruppenummer i basen
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FiSn(pFil,lSnr,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FiSn(LC_FILADM *pFil,long lSnr,LC_BGR * pBgr)
LC_FiArraySn
Finn gruppenummer for flere serienummer
==========================================================================
Formål:
Finner gruppenummer for tabell med serienummer.
Endrer IKKE "current gruppe".
Serienummertabellen kan være "rå" slik den kommer fra GetRef. Linjer med
start øy og slutt øy overses.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short antall i Antall linjer brukt i serienummertabellen
long *snr i Tabell med serienummer som skal finnes
long *bgr u Tabell med gruppenummer funnet
(INGEN_GRUPPE = ikke funnet)
Bruk:
LC_FiArraySn(pFil,antall,snr,bgr);
================================================================================
SK_EntPnt_FYBA void LC_FiArraySn(LC_FILADM *pFil,short antall,long *snr,long *bgr)
LC_FASn
Finn alle serienummer
==========================================================================
Formål:
Finner alle grupper i fil/serienummer søkeområdet og merker i kolonne
BT_SNRSOK i brukttabellen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
long antall r Antall grupper funnet.
Bruk:
antall_funnet = LC_FASn(&SnrAdm);
=============================================================================
SK_EntPnt_FYBA long LC_FASn(LC_SNR_ADM * pSnrAdm)
LC_FFSn
Finn første serienummer
=============================================================================
Formål:
Finner første gruppe i fil/serienummer søkeområdet.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FFSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FFSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FNSn
Finn neste serienummer
==========================================================================
Formål:
Finner neste gruppe i fil/serienummer søkeområdet.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
LC_BGR * pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FNSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FNSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FPSn
Finn forige serienummer
=============================================================================
Formål:
Finner forrige gruppe i fil/serienummer søkeområdet.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FPSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FPSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FLSn
Finn siste serienummer
=============================================================================
Formål:
Finner siste gruppe i fil/serienummer søkeområdet.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FLSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FLSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FFSnBt
Finn første serienummer med tilleggskrav
==========================================================================
Formål:
Finner første gruppe som er merka i gitt kolonne i brukttabellen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
short kolonne i Kolonne i brukt-tabellen som skal sjekkes
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FFSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
=============================================================================
SK_EntPnt_FYBA short LC_FFSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
LC_FNSnBt
Finn neste serienummer med tilleggskrav
==========================================================================
Formål:
Finner neste gruppe også er merka i gitt kolonne i brukttabellen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
short kolonne i Kolonne i brukt-tabellen som skal sjekkes
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FNSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FNSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
LC_FPSnBt
Finn forige serienummer med tilleggskrav
==========================================================================
Formål:
Finner forrige gruppe i fil/serienummer søkeområdet, som også er merka i
gitt kolonne i brukttabellen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
short kolonne i Kolonne i brukt-tabellen som skal sjekkes
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FPSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FPSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
LC_FLSnBt
Finn siste serienummer med tilleggskrav
==========================================================================
Formål:
Finner siste gruppe i fil/serienummer søkeområdet som også er merka i
gitt kolonne i brukttabellen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
short kolonne i Kolonne i brukt-tabellen som skal sjekkes
LC_BGR *pBgr u Gruppenummer
short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
Bruk:
sstat = LC_FLSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FLSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
19 Egenskapsutvalg
FYBA har en egen "utvalgsmotor" som har et rikt sett av utvalgsmetoder.
Disse metodene er spesiellt tilpasset SOSI-formatet.
Følgende metoder er definert:
! Ikke (Tilslag når SOSI-navnet ikke finnes. Bare GINFO.)
AL Alle
<> Fra-til
>< Utenfor
< Mindre-enn
> Større-enn
/ Delelig-med, eventuellt med sjekk på om restverdi er 2. verdi
!/ Ikke-delelig-med
() Inneholder
= Lik
IV Ikke valgt (Tilslag når gruppen ikke er tegnet ennå.
Kombineres med SOSI-navnet "..*")
!= Ikke lik (Tilslag når denne navn og verdi kombinasjonen ikke
finnes. (Bare GINFO)
FL Flere (Tilslag når SOSI-navnet forekommer flere ganger.)
!FL Ikke flere enn (Tilslag når SOSI-navnet IKKE forekommer
flere ganger enn gitt antall.)
LC_OpenQuery
Initier query
==========================================================================
Formål:
Initierer query mot GINFO/PINFO.
Tildeler administrasjonsblokk for utvalg.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_UT_ADM *UtAdm r Peker til administrasjonsblokk for utvalg.
Bruk:
pUtAdm = LC_OpenQuery();
==========================================================================
SK_EntPnt_FYBA LC_UT_ADM *LC_OpenQuery(void)
LC_CloseQuery
Avslutter query
==========================================================================
Formål:
Avslutter query mot GINFO/PINFO.
Frigir minne brukt til administrasjon og utvalgstabeller.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_UT_ADM *UtAdm i Peker til administrasjonsblokk for utvalg.
Bruk:
LC_CloseQuery(pUtAdm);
==========================================================================
SK_EntPnt_FYBA void LC_CloseQuery(LC_UT_ADM * pUtAdm)
LC_PutQueryLine
Legg inn en query-linje
==========================================================================
Formål:
Legger inn og tolker en linje med query-tekst.
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
LC_UT_ADM *UtAdm i Peker til administrasjonsblokk for utvalg.
char *qulin i Linje med query-tekst. (Uten prikker på første nivå).
short sType i Gruppe eller Punkt (U_GRUPPE eller U_PUNKT).
short ist r Status (UT_TRUE=OK, UT_FALSE=linjen er ikke OK)
Bruk:
ist = LC_PutQueryLine(pUtAdm,qulin,sType);
=============================================================================
SK_EntPnt_FYBA short LC_PutQueryLine(LC_UT_ADM *pUtAdm,const char *qulin,short sType)
LC_PutQueryRegel
Legg inn et regelnavn
==========================================================================
Formål:
Legger inn et regelnavn på siste linje i utvalgstabellen.
(Navnet blir intern konvertert til "store" bokstaver.)
Parametre:
Type Navn I/U Forklaring
------------------------------------------------------------------------
LC_UTVALG *pU i Peker til utvalg
char *navn i Regelnavn.
Bruk:
LC_PutQueryRegel(pU,navn);
=============================================================================
SK_EntPnt_FYBA void LC_PutQueryRegel(LC_UTVALG * pU,const char *navn)
LC_LesUtvalg
Les utvalg i kom.filen
=============================================================================
Formål:
Leser og tolker gruppe og punktutvalg på kommandofilen og legger i tabell.
Forutsetter at filen er åpnet på forhånd.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
FILE *pKomFil i Peker til "handle" for åpnet kommandofil.
short sStatus r UT_TRUE=OK, UT_FALSE=feil i linjen
Bruk:
sStatus = LC_LesUtvalg(pUtAdm,pKomFil);
=============================================================================
SK_EntPnt_FYBA short LC_LesUtvalg(LC_UT_ADM *pUtAdm,const char *pszKomFil)
LC_GetUtRegelNavn
Henter regelnavn
=============================================================================
Formål:
Henter regelnavn for at programmet utenfor skal kunne sjekke
at det er tilgjengelig videre behandling av alle definerte navn.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
short *ist iu Status (Inn: 1=start, 0=neste)
(Ut: 0=OK, -1=ferdig);
char *regelpeker r Peker til utvalgsnavn.
Bruk:
regelpeker = LC_GetUtRegelNavn(pUtAdm,&ist);
=============================================================================
SK_EntPnt_FYBA char *LC_GetUtRegelNavn(LC_UT_ADM *pUtAdm,short *ist)
LC_GruppeUtvalg
GINFO-utvalg
==========================================================================
Formål:
Sjekker GINFO-delen av aktuell gruppe mot alle gruppeutvalg fra fil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
short sPrior i Prioritet.
LC_OVERSE_PRIORITET = Tar ikke hensyn til prioritet.
short *sstat iu Søkestatus, Inn: 1=start søk, 0=fortsett søk
Ut : 0=tilslag, -1=ikke tilslag
char **regelnavn u Peker til regelnavn
char *regelnavn u Peker til utvalgsnavn
Bruk:
pszUtvalgsNavn = LC_GruppeUtvalg(pUtAdm.sPrior,&sstat,®el);
=============================================================================
SK_EntPnt_FYBA char *LC_GruppeUtvalg(LC_UT_ADM *pUtAdm,short sPrior,short *sstat,char **regelnavn)
LC_PunktUtvalg
PUNKT-utvalg
=============================================================================
Formål:
Sjekker PINFO-delen av aktuell gruppe for tilslag på PUNKT-UTVALG.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
short sPrior i Prioritet.
short *psStat iu Søkestatus, Inn: 1=start søk, 0=fortsett søk
Ut : 0=tilslag, -1=ikke tilslag
long lPnr i Punktnummer som skal sjekkes.
char **ppszRegel u Peker til regelnavn
Bruk:
LC_PunktUtvalg(pUtAdm,sPrior,&psStat,lPnr,&ppszRegel);
=============================================================================
SK_EntPnt_FYBA void LC_PunktUtvalg(LC_UT_ADM *pUtAdm,short sPrior,short *psStat,long lPnr,char **ppszRegel)
LC_FinnPinfoUtvalg
==========================================================================
Formål:
Finner et PINFO-UTVALG i kjeden av slike utvalg.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
char *pszNavn i Utvalgsnavn
LC_UTVALG * pUtvalg r Peker til utvalget. (NULL = ikke funnet)
Bruk:
pUtvalg = LC_FinnPinfoUtvalg(pszNavn);
==========================================================================
SK_EntPnt_FYBA LC_UTVALG * LC_FinnPinfoUtvalg(LC_UT_ADM * pUtAdm,const char *pszNavn)
LC_PiTestUtvalg
Sjekk PUNKT/PINFO utvalg
==========================================================================
Formål:
Sjekk om PINFO i aktuellt punkt tilfredstiller et punkt-utvalg.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_UT_ADM * pUtAdm i Administrasjonsblokk
LC_UTVALG * pU i Peker til utvalg
long lPnr i Punktnummer som skal sjekkes.
short sTilslag r Status: UT_TRUE=tilslag, UT_FALSE=ikke tilslag
Bruk:
sTilslag = LC_PiTestUtvalg(pUtAdm,pU,lPnr);
==========================================================================
SK_EntPnt_FYBA short LC_PiTestUtvalg(LC_UT_ADM * pUtAdm,LC_UTVALG * pU,long lPnr)
LC_GiQuery
Query mot aktuell ginfo
=============================================================================
Formål:
Sjekker GINFO-delen av aktuell gruppe mot aktuellt query-oppsett.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
short status r Søkestatus, UT_TRUE=tilslag, UT_FALSE=ikke tilslag
Bruk:
ist = LC_GiQuery(pUtAdm);
=============================================================================
SK_EntPnt_FYBA short LC_GiQuery(LC_UT_ADM *pUtAdm)
LC_FAGiQuery
Finn alle ved query mot ginfo
=============================================================================
Formål:
Sjekker GINFO-delen av alle grupper mot aktuell queryopsett.
Tilslag merkes i brukttabellen kolonne BT_GISOK (14).
[Esc] avbryter utvalget, antall tilslag settes da til -1.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
short antall r Antall tilslag på utvalget.
Bruk:
antall = LC_FAGiQuery(pUtAdm, LC_FRAMGR | LC_BAKGR);
=============================================================================
SK_EntPnt_FYBA long LC_FAGiQuery(LC_UT_ADM *pUtAdm,unsigned short usLag)
LC_FAGiKombinertFlateQuery
Finn alle ved query mot ginfo i flate og omkrets
=============================================================================
Formål:
Sjekker GINFO-delen av alle flater mot aktuell queryopsett. Finner de flatene
som har tilslag på utvalgsblokken pUtAdmFlate og har har referanser til grupper
som har tilslag på utvalgsblokken pUtAdmOmkrets.
Tilslag merkes i brukttabellen kolonne BT_GISOK (30).
[Esc] avbryter utvalget, antall tilslag settes da til -1.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdmFlate i Peker til administrasjonsblokk for utvalg for flata.
LC_UT_ADM *pUtAdmOmkrets i Peker til administrasjonsblokk for utvalg for omkrets.
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
short sAlle i Flagg for hvorvidt utvalg for omkrets må slå til på
alle gruppene i omkretsen. TRUE/FALSE
short antall r Antall tilslag på utvalget.
Bruk:
antall = LC_FAGiQuery(pUtAdm, LC_FRAMGR | LC_BAKGR);
=============================================================================
SK_EntPnt_FYBA long LC_FAGiKombinertFlateQuery(LC_UT_ADM * pUtAdmFlate,LC_UT_ADM * pUtAdmOmkrets,
unsigned short usLag,short sMetode)
LC_QueryGP
Søk i ginfo og finn verdi
=============================================================================
Formål:
Bruker query-tekst for å finne linje der parameter skal hentes.
Parametre:
Type Navn I/U Forklaring
---------------------------------------------------------------------------
char *qulin i Linje med query-tekst.
unsigned short iniv i Nivå: Det er definert konstanter som henges
sammen med "|".
LC_GINFO = søk i GINFO på aktuell gruppe
LC_HODE = søk i filhodet
Hvis begge er brukt søkes det først i GINFO.
unsigned short *univ u Nivå: LC_GINFO = parameter er fra GINFO
LC_HODE = parameter er fra filhodet
short *ulin u GINFO-linjenummer for tilslaget.
char **para u Funnet parameter.
short funnet r Status: UT_TRUE=funnet, UT_FALSE=ikke funnet
Bruk:
funnet = LC_QueryGP(qulin,LC_GINFO | LC_HODE,&univ,&ulin,¶);
=============================================================================
SK_EntPnt_FYBA short LC_QueryGP(char *qulin,unsigned short iniv,unsigned short *univ,short *ulin,char **para)
LC_InqMaxPrioritet
Hent største prioritet
==========================================================================
Formål:
Henter største prioritet for gitt utvalgstype.
Parametre:
Type Navn I/U Forklaring
----------------------------------------------------------------------
LC_UT_ADM * pUA i Peker til administrasjonsblokk for utvalg.
short sMaxPrioritet r Max prioritet
Bruk:
sMaxPrioritet = LC_InqMaxPrioritet(pUA);
==========================================================================
SK_EntPnt_FYBA short LC_InqMaxPrioritet(LC_UT_ADM * pUA)
LC_TestPrioritetBrukt
Tester om en prioritet er brukt
==========================================================================
Formål:
Tester om en prioritet er brukt.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
short sPrioritet i Prioritet som skal testes.
short sBrukt r Status: UT_TRUE=brukt, UT_FALSE=ikke brukt.
Bruk:
sBrukt = LC_TestPrioritetBrukt(pUtAdm,sPrioritet);
==========================================================================
SK_EntPnt_FYBA short LC_TestPrioritetBrukt(LC_UT_ADM * pUtAdm,short sPrioritet)
LC_UtvalgPrioritet
Finn brukt prioritet
==========================================================================
Formål:
Sjekker GINFO og PINFO for å finne hvilke prioriteter som "berører" aktuell
gruppe. Resultatet markeres i Gruppetabellen ulPrior.
Parametre:
Type Navn I/U Forklaring
---------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
Bruk:
LC_UtvalgPrioritet(pUtAdm);
===========================================================================
SK_EntPnt_FYBA void LC_UtvalgPrioritet(LC_UT_ADM *pUtAdm)
20 Merke grupper
LC_SetBt
Sett merke i brukttabellen
==========================================================================
Formål:
Legg inn merke i brukttabellen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
short kolonne i Kolonne som skal merkes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
Bruk:
LC_SetBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_SetBt(LC_BGR * pGr,short kolonne)
LC_ClrBt
Slett merke i brukttabellen
==========================================================================
Formål:
Fjern merke i brukttabellen.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
Bruk:
LC_ClrBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_ClrBt(LC_BGR * pGr,short kolonne)
LC_GetBt
Hent merke i brukttabellen
==========================================================================
Formål:
Hent merke i brukttabellen.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal brukes.
(Lovlig BT_MIN_BT - BT_MAX_BT)
merke short r UT_FALSE = ikke marka, UT_TRUE = merka
Bruk:
merke = LC_GetBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA short LC_GetBt(LC_BGR * pGr,short kolonne)
LC_EraseBt
Slett område i brukttabellen
==========================================================================
Formål:
Blanker en eller flere kolonner i brukttabellen i aktuell base.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
fra_kol short i Første kolonne som skal blankes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
til_kol short i Siste kolonne som skall blankes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
Bruk:
LC_EraseBt(fra_kol,til_kol);
==========================================================================
SK_EntPnt_FYBA void LC_EraseBt(short fra_kol,short til_kol)
LC_CopyBt
Kopier kolonne i brukttabellen
==========================================================================
Formål:
Kopier kolonne i brukttabellen.
Samtidig er det mulig å utføre logiske operasjoner mellom de to kolonnene.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short fra_kol i Kolonne det skal kopieres fra. (Lovlig 0 - BT_MAX_BT)
short til_kol i Kolonne det skal kopieres til. (Lovlig 1 - BT_MAX_USER)
short operasjon i Logisk operasjon mellom kolonnene.
BC_COPY = Overskriv gammelt innhold.
BC_AND = Logisk AND mellom de to kolonnene.
BC_OR = Logisk OR mellom de to kolonnene.
BC_INVERT = Overskriv gammelt innhold med
invertert verdi.
BC_EXCHANGE = Bytter innholdet i de to kolonnene.
Bruk:
LC_CopyBt(fra_kol,til_kol,operasjon);
==========================================================================
SK_EntPnt_FYBA void LC_CopyBt(short fra_kol,short til_kol,short operasjon)
LC_SetModusMerk
Setter flag for merking av referert gruppe.
==========================================================================
Formål:
Setter flag for merking av referert gruppe.
Har innvirkning for virkemåten til:
LC_FAGeo, LC_FASn, og LC_FAGiQuery
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
unsigned short modus i 0 = Ikke merk referert gruppe.
1 = Merk referert gruppe.
Bruk:
LC_SetModusMerk(1);
==========================================================================
SK_EntPnt_FYBA void LC_SetModusMerk(unsigned short usModus)
LC_MerkGr
Merk en gruppe brukttabellen
==========================================================================
Formål:
CH Merk aktuell gruppe i brukttabellen. Hvis flag for merking av referert
gruppe er satt, blir også eventuelle refererte grupper merket.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short sKolonne i Kolonne som skal merkes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
short sBryter i Bryter 1=på, 0=av
long lAntall r Antall grupper merket.
Bruk:
lAntall = LC_MerkGr(sKolonne,sBryter);
==========================================================================
SK_EntPnt_FYBA long LC_MerkGr(short sKolonne,short sBryter)
21 Spesiell handtering av flater
Polygonbeskrivelse
Strukturer for polygonbeskrivelse.
Dette er et sett med strukturer som er kjedet sammen til en komplett
beskrielse av en flate. Eksempel på bruk er gitt under LC_POL_GetRef.
!-----------------!
! LC_POLYGON !
! ! !-------------------------!
! !- Omkrets --! ! ! !-----------------! !---------------!
! !LC_POL_OMKR ! ! ! !-!LC_POL_ELEMENT ! !-!LC_POL_ELEMENT !
! ! ! ! ! ! ! - Bgr ! ! ! - Bgr !
! !- Siste !--!-------! ! ! - Snr ! ! ! - Snr !
! !- Første !--!---------! ! - Retning ! ! ! - Retning !
! !------------! ! ! - Forrige (NULL)! ! ! - Forrige !
! !- Hull ------! ! ! - Neste !-! ! - Neste (NULL)!
! !LC_OY_ADM ! ! !-----------------! !---------------!
! ! ! !
! !- Første øy !-!-!
!-!-!- Siste øy ! ! !
! ! !-------------! ! !
! !-----------------! !
! !-----------------!
! ! !------------------------!
! ! !------------! ! !-----------------! !---------------!
! !--------------! !-!LC_POL_OMKR ! ! !-!LC_POL_ELEMENT !!!LC_POL_ELEMENT !
! !LC_OY_ELEMENT ! ! ! ! ! ! ! - Bgr !!! - Bgr !
! !- Omkrets !--! !- Siste !-! ! ! - Snr !!! - Snr !
! !- Neste !-! !- Første !---! ! - Retning !!! - Retning !
! !--------------! ! !------------! ! - Forrige (NULL)!!! - Forrige !
! ! ! - Neste !!! - Neste (NULL)!
! ! !-----------------! !---------------!
! !
! !---------------! !--------------------------!
! ! !------------! ! !-----------------! !---------------!
! !--------------! !-!LC_POL_OMKR ! ! !-!LC_POL_ELEMENT ! !-!LC_POL_ELEMENT !
!--!LC_OY_ELEMENT ! ! ! ! ! ! ! - Bgr ! ! ! - Bgr !
!- Omkrets !--! !- Siste !-! ! ! - Snr ! ! ! - Snr !
!- Neste (NULL)! !- Første !---! ! - Retning ! ! ! - Retning !
!--------------! !------------! ! - Forrige (NULL)! ! ! - Forrige !
! - Neste !-! ! - Neste (NULL)!
!-----------------! !---------------!
LC_POL_InitPolygon
Initierer polygon-struktur
=======================================================================
Formål:
Initierer polygon-struktur.
Parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
Bruk:
LC_POLYGON Polygon;
LC_POL_InitPolygon(&Polygon);
=======================================================================
SK_EntPnt_FYBA void LC_POL_InitPolygon(LC_POLYGON *pPolygon)
LC_POL_FrigiPolygon
Frigi minne som er allokert til polygon
=======================================================================
Formål:
Frigir minne som er allokert til polygon. (Både omkrets og hull.)
Parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
Bruk:
LC_POLYGON Polygon;
LC_POL_FrigiPolygon(&Polygon);
=======================================================================
SK_EntPnt_FYBA void LC_POL_FrigiPolygon(LC_POLYGON *pPolygon)
LC_POL_InitOmkrets
Initierer polygon-omkrets
=======================================================================
Bruk:
POL_OMKR YtrePolygon;
LC_POL_InitOmkrets(YtrePolygon);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
Initierer administrasjonsblokka for polygonelement
=======================================================================
SK_EntPnt_FYBA void LC_POL_InitOmkrets(LC_POL_OMKR *pPO)
LC_POL_LeggTilGruppeOmkrets
Legg til eit element
=======================================================================
Bruk:
LC_POL_OMKR YtrePolygon;
pElement = LC_POL_LeggTilGruppeOmkrets(YtrePolygon,pBgr,sRetning,lSnr);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR * pPO I/U Peikar til polygonadministrasjonsblokka
LC_BGR * pBgr I Gruppenummer
short sRetning I Nøsteretning (LC_MED_DIG eller LC_MOT_DIG)
long lSnr I Serienummer
LC_POL_ELEMENT * pElement R Peker til innlagt element
Legg til eit element i kjeden av polygonelement.
=======================================================================
SK_EntPnt_FYBA LC_POL_ELEMENT * LC_POL_LeggTilGruppeOmkrets(LC_POL_OMKR *pPO,LC_BGR *pBgr,
short sRetning, long lSnr)
LC_POL_FjernGruppeOmkrets
Fjernar element
=======================================================================
Bruk:
LC_POL_OMKR YtrePolygon;
LC_POL_FjernGruppeOmkrets(&YtrePolygon,);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
LC_POL_ELEMENT *pPE I Peker til element som skal fjernes
Fjernar et element i kjeden av polygonelement.
=======================================================================
SK_EntPnt_FYBA void LC_POL_FjernGruppeOmkrets(LC_POL_OMKR *pPO, LC_POL_ELEMENT *pPE)
LC_POL_FjernSisteGruppeOmkrets
Fjernar siste element
=======================================================================
Bruk:
LC_POL_OMKR YtrePolygon;
LC_POL_FjernSisteGruppeOmkrets(&YtrePolygon);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR * pPO I/U Peikar til polygonadministrasjonsblokka
Fjernar siste element i kjeden av polygonelement.
=======================================================================
SK_EntPnt_FYBA void LC_POL_FjernSisteGruppeOmkrets(LC_POL_OMKR *pPO)
LC_POL_FrigiOmkrets
Frigjer minne som er allokert til kjede av polygonelement
=======================================================================
Bruk:
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
Frigir minne som er allokert til kjede av polygonelement.
=======================================================================
SK_EntPnt_FYBA void LC_POL_FrigiOmkrets(LC_POL_OMKR *pPO)
LC_POL_InitOy
Initierer øy-kjeden
=======================================================================
Bruk:
LC_OY_ADM OyKjede;
LC_POL_InitOy(OyKjede);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
Initierer øy-kjeden.
=======================================================================
SK_EntPnt_FYBA void LC_POL_InitOy(LC_OY_ADM *pOA)
LC_POL_FrigiAlleOyer
Frigjer minne som er allokert til kjede av øyelement
=======================================================================
Bruk:
LC_OY_ADM OyKjede;
LC_POL_FrigiAlleOyer(OyKjede);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
Frigjer minne som er allokert til kjede av øy (i polygon) - element.
=======================================================================
SK_EntPnt_FYBA void LC_POL_FrigiAlleOyer(LC_OY_ADM *pOA)
LC_POL_FjernOy
Fjernar ei oy frå kjede av øyelement
=======================================================================
Bruk:
LC_OY_ADM OyKjede;
LC_POL_FjernOy(OyKjede,OyElement);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
LC_OY_ELEMENT *pOE I/U Peikar til kjede av oyar
Frigjer minne som er allokert til kjede av øy (i polygon) - element.
=======================================================================
SK_EntPnt_FYBA void LC_POL_FjernOy(LC_OY_ADM *pOA,LC_OY_ELEMENT *pOE)
LC_POL_LeggTilOy
Legg til eit element
=======================================================================
Bruk:
LC_OY_ADM OyKjede;
LC_POL_LeggTilOy(&OyKjede,pPO);
Parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_OY_ADM *pOyKjede I/U Peikar til kjede av øyelement
LC_POL_OMKR *pPO I Peikar til polygonadministrasjonsblokka
Legg til eit element i kjeden av øyar (i polygon) - element.
=======================================================================
SK_EntPnt_FYBA void LC_POL_LeggTilOy(LC_OY_ADM *pOA,LC_POL_OMKR *pPO)
LC_POL_TestBrukt
Testar om ei gruppe er brukt i polygonet
=======================================================================
Bruk:
LC_POL_TestBrukt(pPolygon,&Bgr);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peker til polygonbeskrivelse.
LC_BGR *pBgr I Peikar til gruppe
short status R Status UT_TRUE = gruppe er brukt i polygonet
Status UT_FALSE = gruppe er IKKJE brukt i polygonet
Testar om ei gruppe er brukt i gitt polygon.
=======================================================================
SK_EntPnt_FYBA short LC_POL_TestBrukt(LC_POLYGON *pPolygon,LC_BGR *pBgr)
LC_POL_PutRef
Legger inn referanser i GINFO
=======================================================================
Formål:
Legger inn referanser i GINFO, ut fra beskrivelse i struktur.
Parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Polygonbeskrivelse
short ngi r Antall linjer GINFO
Bruk:
ngi = LC_POL_PutRef(pPolygon);
=======================================================================
SK_EntPnt_FYBA short LC_POL_PutRef(LC_POLYGON *pPolygon)
LC_POL_GetRef
Hent referanser for flate fra GINFO
==========================================================================
Formål:
Henter referanser fra GINFO til struktur.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peker til adm. for polygonbeskrivelse
Bruk:
short ngi;
long nko;
unsigned short info;
LC_POLYGON Polygon;
LC_POL_ELEMENT * pPE;
LC_OY_ELEMENT * pOE;
LC_POL_InitPolygon(&Polygon);
LC_POL_GetRef(&Polygon);
. Omkretsen .
for(pPE = Polygon.HovedPO.pForstePE; pPE != NULL; pPE = pPE->pNestePE) {
gnavn = LC_RxGr(&pPE->Bgr,LES_OPTIMALT,&ngi,&nko,&info);
.
Behandle ytre avgrensing
.
}
. Øyer .
for (pOE = Polygon.OyOA.pForsteOE; pOE != NULL; pOE = pOE->pNesteOE) {
for (pPE = pOE->PO.pForstePE; pPE != NULL; pPE = pPE->pNestePE) {
gnavn = LC_RxGr(&pPE->Bgr,LES_OPTIMALT,&ngi,&nko,&info);
.
Behandle indre avgrensing (øy)
.
}
}
. Frigi allokerte kjeder .
LC_POL_FrigiPolygon(&Polygon);
==========================================================================
SK_EntPnt_FYBA void LC_POL_GetRef(LC_POLYGON *pPolygon)
LC_POL_GetRefOmkrets
Hent referanser for omkretsen av flate
==========================================================================
Formål:
Henter referanser fra GINFO til struktur.
Rutinen initierer strukturen pPO, men frigir ikke eventuellt gammelt innhold.
Parametre:
Type Navn I/U Forklaring
-------------------------------------------------------------------------
LC_POL_OMKR *pPO; IU Peker til kjede som beskriver omkretsen.
Bruk:
LC_POL_GetRefOmkrets(&OyPO);
==========================================================================
SK_EntPnt_FYBA void LC_POL_GetRefOmkrets(LC_POL_OMKR *pPO)
LC_POL_PTst
Polygontest
==========================================================================
Formål:
Sjekker om gitt punkt ligger innenfor polygon angitt av pPolygon.
Forutsetter at pPolygon danner et lukket polygon.
Skifter ikke aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double a i Punkt som skal sjekkes
double n i
short ist r status: UT_FALSE = punktet er utenfor flaten
UT_TRUE = punktet ligger inne på flaten
Bruk:
.
==========================================================================
SK_EntPnt_FYBA short LC_POL_PTst(LC_POLYGON *pPolygon,double a,double n)
LC_POL_PTstOmkrets
Sjekk om punkt ligger inni polygonomkrets
==========================================================================
Formål:
Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
av struktur.
Forutsetter at tabellen danner et lukket polygon
Skifter ikke aktuell gruppe.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_POL_OMKR *pPO I/U Peker til beskrivelse av omkretsen
double a i Punkt som skal sjekkes
double n i
short ist r status: UT_FALSE = punktet er utenfor flaten
UT_TRUE = punktet ligger inne på flaten
Bruk:
ist = LC_POL_PTstOmkrets(pPO,a,n);
==========================================================================
SK_EntPnt_FYBA short LC_POL_PTstOmkrets(LC_POL_OMKR *pPO,double a,double n)
LC_POL_Box
Henter omskreven boks
=======================================================================
Bruk:
LC_POL_Box(pPA,&nva,&nvn,&oha,&ohn);
parametere:
Type Navn I/U Forklaring
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I Peikar til polygonadministrasjonsblokka
double *nva U
double *nvn U
double *oha U
double *ohn U
Henter omskriven boks for polygon.
=======================================================================
SK_EntPnt_FYBA void LC_POL_Box(LC_POL_OMKR *pPO,double *nva,double *nvn, double *oha,double*ohn)
22 Diverse funksjoner
22.1 Beregninger
LC_BerAreal
Beregn areal av aktuell FLATE
==========================================================================
Formål:
Beregner arealet av aktuell gruppe hvis denne er flate.
Referansene brukes for arealberegningen.
Tar hensyn til fradrag for øyer.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double areal u Beregnet areal
Bruk:
areal = LC_BerAreal();
=============================================================================
SK_EntPnt_FYBA double LC_BerAreal(void)
LC_BerLengde
Beregn horisontal lengde av aktuell gruppe
==========================================================================
Formål:
Beregn horisontal lengde av aktuell gruppe.
Tar ikke hensyn til høyde/dybde.
Referansene brukes IKKE i beregningen.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Bruk:
areal = LC_BerLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerLengde(void)
LC_BerLengde3D
Beregn skrå lengde av aktuell gruppe
==========================================================================
Formål:
Beregn skrå lengde av aktuell gruppe.
Krever at det finnes høyde/dybde i alle punkt.
Referansene brukes IKKE i beregningen.
Beregner bare for LINJE og KURVE.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double lengde u Beregnet lengde
bool beregnet r Status som viser om lengde er beregnet
Bruk:
beregnet = LC_BerLengde3D(&skraa_lengde);
=============================================================================
SK_EntPnt_FYBA bool LC_BerLengde3D(double *skraa_lengde)
LC_BerAvgrensLengde
Beregn lengden av avgrensning av FLATE
==========================================================================
Formål:
Beregn lengden av avgrensningen av aktuell gruppe hvis denne er flate.
Både indre og ytre avgrensning beregnes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double lengde u Beregnet areal
Bruk:
lengde = LC_BerAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerAvgrensLengde(void)
LC_BerYtreAvgrensLengde
Beregn lengden av ytre avgrensning av FLATE
==========================================================================
Formål:
Beregn lengden av ytre avgrensningen av aktuell gruppe hvis denne er flate.
Bare ytre avgrensning beregnes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Bruk:
lengde = LC_BerYtreAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerYtreAvgrensLengde(void)
LC_BerIndreAvgrensLengde
Beregn lengden av indre avgrensning av FLATE
==========================================================================
Formål:
Beregn lengden av indre avgrensningen av aktuell gruppe hvis denne er flate.
Bare indre avgrensning beregnes.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Bruk:
lengde = LC_BerIndreAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerIndreAvgrensLengde(void)
LC_RoundKoord
Endre koordinatene i buffer til riktig enhet
===========================================================================
Formål:
Endrer koordinatene i aktuell gruppe i buffer til valgt enhet.
(Rutinen blir utført fra LC_WxGr.)
Parametre: ingen
Bruk:
LC_RoundKoord();
==============================================================================
SK_EntPnt_FYBA void LC_RoundKoord(void)
22.2 Strukturendring
LC_SnuGr
Snu gruppe
===========================================================================
Formål:
Snur en gruppe.
Rutinen tilsvarer put fra brukerprogram inn i ringbufret.
Både koordinater, høyde, KP og PINFO blir behandlet.
For .BUE blir fortegnet på radius endret.
Fortegnet på referanser til gruppen blir oppdatert.
Det er ikke mulig å snu gruppe som er referert fra grupper som
ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short sStatus r Status: UT_TRUE = OK
UT_FALSE = feil, ikke splittet
Bruk:
status = LC_SnuGr();
=============================================================================
SK_EntPnt_FYBA short LC_SnuGr(void)
LC_SammenfoyGr
Sammenføy grupper
==========================================================================
Formål:
Sammenføye to grupper.
Kopierer koordinater fra gitt gruppe inn i aktuell gruppe.
De kopierte koordinatene kommer som en utvidelse av gruppen.
Rutinen tildeler selv nødvendig plass i buffer.
Kvalitet og enhet blir automatisk oppdatert slik at gruppene ikke
mister informasjon.
Gruppen det kopieres fra blir slettet.
Eventuelle referanser til gruppene blir oppdatert.
Det er ikke mulig å sammenføye hvis en av gruppene er referert fra grupper
som ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
LC_BGR * pFraBgr i Gruppenummer det skal kopieres fra.
short retning i Buffer-retning:
HENT_FORRFRA ( 1) = vanlig,
HENT_BAKFRA (-1) = buffer skal snus.
short plassering i Forteller hvor pFraBgr skal plasseres i
aktuell gruppe.
LC_SG_FORRAN = Heng den andre gruppen inn
foran første koordinat.
LC_SG_BAK = Heng den andre gruppen inn
etter siste koordinat.
short metode i Forteller hva som skal skje med sammenføingspunktene.
LC_SG_BEHOLD = Begge punktene beholdes.
LC_SG_FJERN = Bare det ene av punktene beholdes.
short ngi u Antall GINFO-linjer
long nko u Antall koordinater
unsigned short info u Diverse informasjon. (Se under LC_RxGr)
short sStatus r Status: UT_TRUE=OK, UT_FALSE=ikke utført.
Bruk:
sStatus = LC_SammenfoyGr(bgr,retning,plassering,metode,&ngi,&nko,&info);
=============================================================================
SK_EntPnt_FYBA short LC_SammenfoyGr(LC_BGR * pFraBgr,short retning,short plassering,short metode,
short *ngi,long *nko,unsigned short *info)
LC_SplittGr
Splitt gruppe
==========================================================================
Formål:
Splitter aktuell gruppe i to deler.
Første del av gruppen beholdes som aktuell gruppe. Denne blir ikke
skrevet til SOSI-filen, men buffer er oppdatert.
Siste del av gruppen legges som en ny gruppe på samme fil som
opprinnelig gruppe. Denne blir skrevet til basen.
Den delen av gruppen som ligger mellom P1 og P2 blir fjernet.
Hvis gruppen er BUEP og en av delene får bare to koordinater
blir det lagt inn et nytt punkt midt på buen.
Det er ikke mulig å splitte grupper som er referert fra grupper som
ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
long sP1 i Punktnummer 1. (Må være større enn 1)
long sP2 i Punktnummer 2. (Må være mindre enn nko)
LC_BGR * pBgr2 u Nytt gruppenummer for siste del av gruppen.
short sStatus r Status: UT_TRUE = OK
UT_FALSE = feil, ikke splittet
Bruk:
sStatus = LC_SplittGr(sP1,sP2,&Bgr2);
==========================================================================
SK_EntPnt_FYBA short LC_SplittGr (long sP1,long sP2,LC_BGR * pBgr2)
LC_ErstattReferanse
Erstatt referanse
==========================================================================
Formål:
Erstatt referanse i alle grupper i gitt fil.
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Fil som skal behandles
long lGmlSnr i Gruppe som skal byttes ut
long lNyttSnr i Ny gruppe
Verdien 0 fører til gammelt serienummer
fjernes uten at det legges inn noe nytt.
bool bSammeRetning i Gruppene er digitalisert i samme retning
Bruk:
sStatus = LC_ErstattReferanse(pFil, lGmlSnr, lNyttSnr, bSammeRetning);
==========================================================================
SK_EntPnt_FYBA void LC_ErstattReferanse (LC_FILADM *pFil,long lGmlSnr,long lNyttSnr, bool bSammeRetning)
22.3 Hele basen
LC_InqAntFiler
Finn antall filer i basen
==========================================================================
Formål:
Finn antall filer i aktuell base.
Parametre:
Type Navn I/U Forklaring
-------------------------------------------------------------------
unsigned short usLag i Velg hvilke "lag" det skal søkes i.
LC_FRAMGR og /eller LC_BAKGR
(Bruk "|" for å kombinere.)
short sAntall r Antall filer i aktuell base.
Bruk:
Finner antall framgrunnsfiler i basen
sAntall = LC_InqAntFiler(LC_FRAMGR);
==========================================================================
SK_EntPnt_FYBA short LC_InqAntFiler(unsigned short usLag)
22.4 Prioritet
LC_ClrPrioritet
Slett prioritets-bit
==========================================================================
Formål:
Slett prioritets-bit.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig 0 til LC_MAX_ANT_PRIOR-1)
Bruk:
LC_ClrPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_ClrPrioritet(LC_BGR * pGr,short kolonne)
LC_SetPrioritet
Sett prioritets-bit
==========================================================================
Formål:
Sett prioritets-bit.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig 0 til LC_MAX_ANT_PRIOR-1)
Bruk:
LC_SetPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_SetPrioritet(LC_BGR * pGr,short kolonne)
LC_InqPrioritet
Hent prioritets-bit
==========================================================================
Formål:
Hent prioritets-bit.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal hentes.
(Lovlig 0 til LC_MAX_ANT_PRIOR-1)
short sAvPaa r Av eller På (UT_TRUE = På, UT_FALSE = Av)
Bruk:
sAvPaa = LC_InqPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA short LC_InqPrioritet(LC_BGR * pGr,short kolonne)
LC_ErasePrioritet
Blank ut prioritets-bit
==========================================================================
Formål:
Blank ut prioritets-bit.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
Bruk:
LC_ErasePrioritet(pGr);
==========================================================================
SK_EntPnt_FYBA void LC_ErasePrioritet(LC_BGR * pGr)
LC_EraseAllPrioritet
Blank ut ALLE prioritets-bit
==========================================================================
Formål:
Blank ut alle prioritets-bit på alle gruppene i denne filen.
Parametre:
Navn Type I/U Forklaring
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
Bruk:
LC_EraseAllPrioritet(pFil);
==========================================================================
SK_EntPnt_FYBA void LC_EraseAllPrioritet(LC_FILADM *pFil)
22.5 Kvalitet
LC_FormatterKvalitet
Formatter KVALITET
==========================================================================
Formål:
Formater parameterstrengen for KVALITET.
Resultatet legges i en intern streng, og må kopieres over til andre
variabler før endring.
Parametre:
Type Navn I/U Forklaring
-------------------------------------------------------------------------
short sMetode i Hvordan data er registrert.
KVAL_MET_UNDEF metode er udefinert.
KVAL_MET_STD standard metode fra nivå over.
long lNoyaktighet i Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
KVAL_NOY_STD standard nøyaktighet fra nivå over
short sSynbarhet i Synbarhet i bilde
KVAL_SYN_GOD godt synlig.
KVAL_SYN_UNDEF synbarhet er udefinert.
KVAL_SYN_STD standard metode fra nivå over.
short sHoydeMetode i Hvordan data er registrert.
KVAL_MET_UNDEF metode er udefinert.
KVAL_MET_STD standard metode fra nivå over.
long lHoydeNoyaktighet i Registreringsnøyaktighet
KVAL_NOY_UKJENT nøyaktighet er ukjent.
KVAL_NOY_STD standard nøyaktighet fra nivå over
char *pszParameter r Peker til '/0'-avslutta streng.
Bruk:
pszParameter = LC_FormatterKvalitet(sMetode,lNoyaktighet,sSynbarhet,
sHoydeMetode,lHoydeNoyaktighet);
=============================================================================
SK_EntPnt_FYBA char *LC_FormatterKvalitet(short sMetode,long lNoyaktighet,short sSynbarhet,
short sHoydeMetode,long lHoydeNoyaktighet)
22.6 Tabellhandtering
LC_InitTabel
Åpner tabellsystemet
=============================================================================
Formål:
Initierer tabellsystemet og åpner filen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long n_rec i Antall reckords som skal nullstilles. Disse kan
etterpå brukes til tilfeldig aksess. Utvidelse
av filen kan senere bare skje i fortløpende
rekkefølge.
short rec_len i Reckordlengde. (Bruk sizeof for å finne lengden.)
void *buffer i Peker til buffer som skal brukes for nullstilling.
short ist r Status. (0=OK, -1=feil)
Bruk:
.
struct{
long snr;
short ngi;
short nko;
} buffer;
.
.
ist = LC_InitTabel(10000L,sizeof buffer,(void *)(&buffer));
.
ist = LC_PutTabel(linje,(void *)&buffer);
.
ist = LC_GetTabel(linje,(void *)&buffer);
.
LC_CloseTabel();
=============================================================================
SK_EntPnt_FYBA short LC_InitTabel(long n_rec,short rec_len,void *buffer)
LC_PutTabel
Put tabell-linje
=============================================================================
Formål:
Legg inn en linje fra tabellfilen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long linje i Linjenummer som skal legges inn. (0 er første linje)
(Største lovlige er 1 større enn det største hittil.)
void *buffer i Peker til struktur som skal legges inn.
short ist r Status (0=OK, -1=feil)
Bruk:
ist = LC_PutTabel(linje,(void *)&buffer);
=============================================================================
SK_EntPnt_FYBA short LC_PutTabel(long linje,void *buffer)
LC_GetTabel
Get tabell-linje
=============================================================================
Formål:
Henter en linje fra tabellfilen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
long linje i Linjenummer som skal hentes. (0 er første linje)
void *buffer i Peker til struktur som skal ta mot lest reckord.
short ist r Status (0=OK, -1=feil)
Bruk:
ist = LC_GetTabel(linje,(void *)&buffer);
=============================================================================
SK_EntPnt_FYBA short LC_GetTabel(long linje,void *buffer)
LC_CloseTabel
Stenge tabellsystemet
=============================================================================
Formål:
Avslutter tabellsystemet og stenger og sletter filen.
Tabellen kan nå åpnes på nytt for annen bruk.
Parametre: ingen
Bruk:
LC_CloseTabel();
=============================================================================
SK_EntPnt_FYBA void LC_CloseTabel(void)
22.7 Meldingshandtering
FYBA har en mekanisme som muliggjør at kallende program handterer meldinger til bruker.
Dette er callback-rutiner som kalles fra FYBA for feilmeldings-handtering
og visning av framdrift under indeksoppbygging.
Et eksempel på implementasjon ligger i Fyba_Callback.cpp.
For å få et godt brukergrensesnitt bør disse rutinene endres slik at de bruker
det meldings og feilhandteringssystemet som brukes av hovedprogrammet.
Hvis FYBA brukes som en DLL må meldingshandteringsrutinene registreres
med følgende rutiner:
LC_SetErrorHandler
Registrer feilmeldingsrutine
=============================================================================
Formål:
Registrer feilmeldingsrutine.
Feilmeldingsrutinen blir kallt hvis det oppstår feil.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
void (*f) (short ,char *,char *) i Peker til feilmeldingsrutine
Bruk:
LC_SetErrorHandler(ErrorHandler);
Feilmeldingsrutinen skal ha følgende definisjon:
void ErrorHandler(short feil_nr,const char *logtx,const char *vartx);
Med følgende parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short feil_nr i Feil-nummer
char *logtx i Tekst som bare skrives til logfil.
Eks:"(utført i LC_RxGr)"
char *vartx i Denne tekststreng henges etter feilmeldingsteksten.
=============================================================================
SK_EntPnt_FYBA void LC_SetErrorHandler(void (*f) (short,const char*,const char*))
LC_SetStartMessageHandler
Registrer initieringsrutine
=============================================================================
Formål:
Registrer initieringsrutine.
Initieringsrutinen blir kalt for å starte visning av framdrift.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
void (*f)(char*) i Peker til initieringsrutine
Bruk:
LC_SetStartMessageHandler(StartMessageHandler);
Initieringsrutinen skal ha følgende definisjon:
void StartMessageHandler(char *pszFilnavn);
Med følgende parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFilnavn i Ekstra meldingstekst (filnavn)
=============================================================================
SK_EntPnt_FYBA void LC_SetStartMessageHandler(void (*f)(const char*))
LC_SetShowMessageHandler
Registrer visningsrutine
=============================================================================
Formål:
Registrer visningsrutine.
Visningsrutine blir kalt for å vise framdrift ved indeks-oppbygging.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
void (*f)(double) i Peker til visningsrutine
Bruk:
LC_SetShowMessageHandler(ShowMessageHandler);
Visningsrutinen skal ha følgende definisjon:
void ShowMessageHandler(double prosent);
Med følgende parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
double prosent i Prosent ferdig (0.0 - 100.0)
=============================================================================
SK_EntPnt_FYBA void LC_SetShowMessageHandler(void (*f)(double))
LC_SetEndMessageHandler
Registrer avslutningsrutine
=============================================================================
Formål:
Registrer avslutningsrutine.
Avslutningsrutinen blir kalt for å avslutte visning av framdrift ved indeksoppbygging.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
void (*f)(void) i Peker til avslutningsrutine
Bruk:
LC_SetEndMessageHandler(EndMessageHandler);
Avslutningsrutinen skal ha følgende definisjon:
void EndMessageHandler(void);
=============================================================================
SK_EntPnt_FYBA void LC_SetEndMessageHandler(void (*f)(void))
LC_SetCancelHandler
Registrer avbruddsstyring
=============================================================================
Formål:
Registrer avbruddsstyring.
Rutine for avbruddsstyring blir kalt for å sjekke om bruker ønsker
å avbryte beregningen.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short (*f)(void) i Peker til rutine for avbruddsstyring.
Bruk:
LC_SetCancelHandler(CancelHandler);
Rutine for avbruddsstyring skal ha følgende definisjon:
short CancelHandler(void);
Med følgende parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short sAvbrutt r UT_TRUE = Cancel
UT_FALSE = ikke avbrudd
=============================================================================
SK_EntPnt_FYBA void LC_SetCancelHandler(short (*f)(void))
En tilsvarende enkel feilmeldingshandtering ligger i FYBA_DLL.dll.
Denne (DLL'ens) meldingshandteringen blir brukt hvis ekstern meldingshandtering
ikke blir aktivisert.
LC_StartMessage
Vise melding
=============================================================================
Formål:
Starter vising av melding om baseoppbygging.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
char *pszFilnavn i Ekstra meldingstekst (filnavn)
Bruk:
LC_StartMessage(pszFilnavn);
=============================================================================
void LC_StartMessage(const char *pszFilnavn)
LC_ShowMessage
Vise melding
=============================================================================
Formål:
Vising av melding om baseoppbygging.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
double prosent i Prosent ferdig (0.0 - 100.0)
Bruk:
LC_ShowMessage(prosent);
=============================================================================
void LC_ShowMessage(double prosent)
LC_EndMessage
Avslutt melding
=============================================================================
Formål:
Avslutt melding om baseoppbygging.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
Bruk:
LC_EndMessage();
=============================================================================
void LC_EndMessage(void)
LC_Cancel
Sjekk om Esc er trykket
==========================================================================
Formål:
Sjekk om det er trykkt på Esc (Avbryte indeksoppbygging).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short sAvbrutt r UT_TRUE = Cancel
UT_FALSE = ikke avbrudd
Bruk:
sAvbrutt = LC_Cancel();
==========================================================================
short LC_Cancel(void)
LC_Error
Feilmeldingsrutine
=============================================================================
Formål:
Standard feilmeldingsrutine.
Parametre:
Type Navn I/U Forklaring
-----------------------------------------------------------------------------
short feil_nr i Feil-nummer
char *logtx i Tekst som bare skrives til logfil.
Eks:"(utført i LC_RxGr)"
char *vartx i Denne tekststreng henges etter feilmeldingsteksten.
Bruk:
LC_Error(35,"(Kallt i LC_Xxxx)","");
=============================================================================
void LC_Error(short feil_nr,const char *logtx,const char *vartx)
22.8 Hjelperutine for meldingshandtering
LC_StrError
Feilmeldingstekst
==========================================================================
Formål:
Henter feilmeldingstekst og nivå for et feilmeldingsnummer.
Strengen legges i en egen feilmeldingsstruktur for feil-rutiner i fyba.
Dette blir ødelagt ved neste kall til en "feil-rutine". For å ta vare på
strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
short feil_nr i Feilmeldingsnummer
char **feilmelding u Peker til feilmeldingstekst avslutta med '/0'.
short *strategi r Feilnivå (0-4)
0 = Ikke i bruk. (Utkoblet, testmeldinger mm.)
1 = Lite alvorlig. Vises kort.
2 = Normal feilmelding. Vises ca. 1 sekund.
3 = Alvorlig. Krev tastetrykk for å fortsette.
4 = Svært alvorlig. Programmet bør avbrytes.
Bruk:
strategi = LC_StrError(ckap,feil_nr,&feilmeldingspeker);
==========================================================================
SK_EntPnt_FYBA short LC_StrError(short feil_nr,char **feilmelding)
22.9 Feilsøking
LC_DumpTab
Dump interne tabeller til stderr
==========================================================================
Formål:
Dump interne tabeller til stderr
Parametre:
Type Navn I/U Forklaring
--------------------------------------------------------------------------
Bruk:
LC_DumpTab();
=============================================================================
SK_EntPnt_FYBA void LC_DumpTab(void)