FYBA
A Storage System for Geo Data in SOSI format.
Last updated: 2014-08-24 by rubund. Translated from the norwegian version dated 2013-10-09
1 Introduction
FYBA is a library to handle searching, reading and updating of
SOSI-files.
FYBA is now compatible with the SOSI-format
versjon 4.0, and will be adapted to newer SOSI-versions.
This user manual is made for people who are familiar with SOSI and C-programming.
All functions and constants are defined in the file FYBA.H.
This file should therefore be included in all files which use the FYBA-functions.
FYBA is written in ANSI C and it should therefore be possible to compile it in all platforms where there is a suitable compiler.
There are however some helper functions that are architecture-dependent.
These functions were separated into a separate library (UT) and must be adapted to the architecture.
They have been tested in
DOS, OS/2-16, OS/2-32, Win16, Win32, X64 and
various UNIX varieties (POSIX, HPUX, Silicon graphics).
2 Overview of the Functionality of FYBA
FYBA is a library that establishes and maintains "index-files" (.IDX) with the necessary information for
reading, writing, searching and manipulation of data in SOSI files.
As an overview, the following figure can explain the relationship between the
SOSI-files, the library and programs linked with the library.
!---------------!
!---------------->! Index-files !<-------!
! !---------------! !
! ^ !
! ! !
! !---!-----! ! !-----------------!
! ! ! !-->! !
! ! Buffer ! ! !
!------!------! LC_Rxxxx ! ! LC_PutXxx ! User-program !
! SOSI-file(s)!<----------- !internal !<------------- ! !
! ! ----------->! ! ! !
!-------------! LC_Wxxxx ! in ! ------------->! !
! ! LC_GetXxx ! !
! the FYBA! ! !
! ! ! !
! routines! !-----------------!
! !
!---------!
3 The Internal Workings of the Index System
The index system consists of a bunch of tables. These are partly kept in RAM, and
partly as files on the hard drive.
Below, there is a drawing of these tables.
This is only for your information. It is not necessary to know them in detail to be able
to use the library:
Group table
Group table
This is the main table with the information about every single group in the SOSI file.
!------------------------------:-----------------------------------------------*
!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 !
*------------------------------------------------------------------------------*
Used table
Marking of groups
This table is partly used internally by FYBA and partly by the user program.
The following bits are defined:
--------------------------------------------------------------------------------------
31 The group has been found after a geographical search -----! Users can read/use
30 The group has been found with a GINFO selection ! these, but it is not
29 The group has been found after a serial number search ! allowed to change them.
28 The group is in the ring buffer !
27 The group is used in a rewritten block ------!
26 -----!
. ! Users have
. ! full access
2 ! to these.
1 -----!
0 The group is waiting in a line to be written to the SOSI-file
SOSI buffer
Binary copy of the SOSI-file
In order to increase the speed, the library makes a binary copy of the SOSI file.
This copy is partly stored in RAM and partly on the hard drive.
The copy consists of group information, coordinates and node information.
The group information for one group is treated as a long string with pointers
to the start position for every GINFO-line
!-----------:-----------:----------:----------------------------------!
! GINFO 1 ! GINFO 2 ! GINFO 3 ! ..... !
!-----------:-----------:----------:----------------------------------!
! ! !
!---------! ! !
! ! !
!--------! ! ! !
! GINFO ! ! ! !
!--------! ! ! !
! offset !-! ! !
! !----- !
! !-----------------
The coordinates are stored in separate arrays. The node information is stored
as a long string for the entire group with pointers to every node to the start
position for PINFO for every node in the same way as GINFO.
!--------! !--------! !----------:-------:--------!
! East ! ! North ! ! Altitude ! KP ! PINFO !
!--------! !--------! !----------!-------!--------!
! double ! ! double ! ! double ! short ! ushort !
! m ! ! m ! ! m ! ! ofset !
Serial number table
!-------------*
! Group number!
!-------------! The line number in the table is the serial number.
! lGrNr !
! (long) !
*-------------*
Geographical search table
Geographical search table
Geopgraphical search is based on a rewritten box.
The boxes are organised in an R-tree.
!-----------------------------------*
! Rewritte box !
! !
! min-N ! min-E ! max-N ! max-E !
! ! ! ! !
!--------!--------!--------!--------!
!dMinNord!dMinAust!dMaxNord!dMaxAust!
! d ! d ! d ! d !
! ! ! ! !
*-----------------------------------*
4 Naming Conventions
The variable names are freely chosen to say as much about what the variables contain. Many of the names are in Norwegian because of the origin of the library.
Most of the functions in the user interface begin with "LC_":
In addition, there are some special functions that are used to read the file header directly from a SOSI file.
These have names that start with "HO_":
5 Initialisation and Control
LC_Init
Initialises FYBA
=============================================================================
Purpose:
Initialises FYBA.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
Usage:
LC_Init();
=============================================================================
SK_EntPnt_FYBA void LC_Init(void)
LC_InqVer
Identification
=============================================================================
Purpose:
Gets the version of this library.
=============================================================================
SK_EntPnt_FYBA char *LC_InqVer(void)
LC_Close
Closes FYBA
=============================================================================
Purpose:
Closes FYBA.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
Usage:
LC_Close();
=============================================================================
SK_EntPnt_FYBA void LC_Close(void)
LC_ErInitiert
Is FYBA initialised
=============================================================================
Purpose:
Checks if FYBA has been initialised / is available.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
short sStaus r 0=not initialised, or closed
1=initialised
Usage:
sStatus = LC_ErInitiert();
=============================================================================
SK_EntPnt_FYBA short LC_ErInitiert(void)
LC_MaxSkriv
Maximum number of times to write before writing to the SOSI file
==========================================================================
Purpose:
Sets the maximum number of times to write before writing to the SOSI file
(0 = everything is written directly to the SOSI file.)
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
long number i Maxium number of times to write before writing to the SOSI file
Usage:
LC_MaxSkriv(number);
=============================================================================
SK_EntPnt_FYBA void LC_MaxSkriv(long antall)
LC_InqMaxSkriv
Maximum number of times to write before writing to the SOSI file
==========================================================================
Purpose:
Gets the maximum number of times to write before writing to the SOSI file.
(0 = everything is written directly to the SOSI file.)
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
long number i Maxium number of times to write before writing to the SOSI file
Usage:
number = LC_InqMaxSkriv();
=============================================================================
SK_EntPnt_FYBA long LC_InqMaxSkriv(void)
LC_SetNgisModus
Choose NGIS mode
==========================================================================
Purpose:
Sets the way to handle groups that are marked for update by NGIS.
The default value after LC_Init is NGIS_NORMAL.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short mode i The way to handle:
NGIS_NORMAL (0) = Normal
NGIS_SPESIAL (1) = Special mode where it is possible to read
groups that have been marked as deleted
Usage:
LC_SetNgisModus(NGIS_NORMAL);
==========================================================================
SK_EntPnt_FYBA void LC_SetNgisModus(short modus)
LC_SetDefLpfi
Available space between groups
==========================================================================
Purpose:
Adds default value for the number of letters available behind groups in a .SOS-file
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------------
short num_letters i Number of letters available space.
Usage:
LC_SetDefLpfi(ant_tegn);
=============================================================================
SK_EntPnt_FYBA void LC_SetDefLpfi(short ant_tegn)
LC_InqDefLpfi
Gets the available space between groups
==========================================================================
Purpose
Gets the default value for the number of letters available behind groups in a .SOS-file
Parameters:
Type Name I/O Explanation
----------------------------------------------------------------------------------
short num_letters r Number of letters available space.
Usage:
ant_tegn = LC_InqDefLpfi();
=============================================================================
SK_EntPnt_FYBA short LC_InqDefLpfi(void)
LC_SetUtvidModus
Set the expanding mode
==========================================================================
Purpose:
Set the way to handle expanding of SOSI files.
The default value after LC_Init is LC_UTVID_SIKKER.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short mode i Way to handle:
LC_UTVID_SIKKER (0) = The SOSI file is closed and the file size
is updated after every group that is
written in the end of the file.
LC_UTVID_RASK (1) = The SOSI file is not closed after each
group that is written at the end
of the file.
(Only to be used in special circumstances.)
Usage:
LC_SetUtvidModus(LC_UTVID_SIKKER);
==========================================================================
SK_EntPnt_FYBA void LC_SetUtvidModus(short modus)
LC_GetUtvidModus
Get the expanding mode
==========================================================================
Purpose:
Get the way to handle expanding of SOSI files.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short mode r Way to handle:
LC_UTVID_SIKKER (0) = The SOSI file is closed and the file size
is updated after every group that is
written in the end of the file.
LC_UTVID_RASK (1) = The SOSI file is not closed after each
group that is written at the end
of the file.
(Only to be used in special circumstances.)
Usage:
short sModus = LC_GetUtvidModus();
==========================================================================
SK_EntPnt_FYBA short LC_GetUtvidModus(void)
6 Opening Base and SOSI Files
LC_OpenBase
Opens a new base
==========================================================================
Purpose:
Opens a new base, resets the tables.
If the base is a draft base, a SOSI file with one group is created in the base.
This is used as a buffer for read / write.
The draft file is stored in the current directory.
The draft base is only used when all SOSI files are opened with a sequential read / write.
The new base is chosen as the active base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short sBaseType i Base type. Constants defined:
LC_BASE = Standard base.
LC_KLADD = Draft base. Only used in special
circumstances if no files is opened
as a LC_BASE_xx.
LC_BASEADM * pBase r Base pointer.
Usage:
pBase = LC_OpenBase(sBaseType);
==========================================================================
SK_EntPnt_FYBA LC_BASEADM * LC_OpenBase(short sBaseType)
LC_CloseBase
Close base
==========================================================================
Purpose:
Closes all the files in the base, and releases the basee administration block.
If the active base is closed, the first base in the system is chosen as
the new active base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
PLCBASEADM pBase i Pointer to baseAdm
short s_stat i Close-status
RESET_IDX = Removes the index files
SAVE_IDX = Saves the index files
ABORT = Saves the index files (for cancelled index
generation)
Usage:
LC_CloseBase(pBase,s_stat);
==========================================================================
SK_EntPnt_FYBA void LC_CloseBase(LC_BASEADM * pBase,short s_stat)
LC_SelectBase
Selects active base
==========================================================================
Purpose:
Selects the active base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_BASEADM * pBase i Pointer to baseAdm
Usage:
LC_SelectBase(pBase);
==========================================================================
SK_EntPnt_FYBA void LC_SelectBase(LC_BASEADM * pBase)
LC_InqCurBase
Gets the active base
==========================================================================
Purpose:
Gets the active base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_BASEADM * pBase r Base pointer
Usage:
pBase = LC_InqCurBase();
=============================================================================
SK_EntPnt_FYBA LC_BASEADM * LC_InqCurBase(void)
LC_OpenSos
Åpner og sjekker SOSI-fil
==========================================================================
Purpose:
Opens a new file in active base.
Allocates memory for a new file administration block and initialises it.
Opens the SOSI file and adds names etc into the file administration block.
Reads the header and interprets it in the file table.
The header is not generated for new files. It can be generated with LC_PutGi, or
LC_NyttHode or copied from another file, and written with LC_WsGr or LC_WxGr.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------
char *fil i Filename including path and file type
(If the file type is missing, it assumes .SOS)
short sModus i File mode
LC_BASE_FRAMGR = Foreground file
LC_BASE_BAKGR = Background file (Only read)
LC_SEKV_LES = Sequential, read
LC_SEKV_SKRIV = Sequential, write
LC_SEKV_UTVID = Sequential, expand old file
short sNyIdx i Index generation:
LC_NY_IDX = Forced new generation
LC_GML_IDX = Use old .idx if it is OK
short sVisStatus i Show the index
LC_VIS_STATUS = Show status
LC_INGEN_STATUS = Hide status
LC_FILADM **pFil u Pointer to file administration block.
short *o_stat u Detailed open status:
0: Opening and header OK
>0: Error when opening
-1: Opening OK, empty file / not a SOSI file
-2: Not opened, append can not be used on
an empty file / not SOSI file
-3: (LC_CANCEL): Not opened,
index generation cancelled with [Esc].
or a file error.
-4: (LC_DUBLIKAT): The file is already in the base (pFil)
-5: (LC_OPPTATT): The file is opened in another program
short status r Opening status: UT_TRUE = OK
UT_FALSE = Error, (o_stat contains the details)
Usage:
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);
==========================================================================
SK_EntPnt_FYBA short LC_OpenSos(const char *fil,short sModus,short sNyIdx,short sVisStatus,
LC_FILADM **pFil, short *o_stat)
LC_CloseSos
Close SOSI file
==========================================================================
Purpose:
Closes a SOSI file, and removes it from the base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Pointer to a filAdm-block
short s_stat i End-status
RESET_IDX = Remove the index files
SAVE_IDX = Saves the index files
Usage:
LC_CloseSos(pFil,SAVE_IDX);
==========================================================================
SK_EntPnt_FYBA void LC_CloseSos(LC_FILADM *pFil,short s_stat)
LC_DelIdx
Delete the index files
==========================================================================
Purpose:
Deletes the index files for a specified SOSI file
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
char *szSosFil i SOSI filename
Usage:
LC_DelIdx(szSosFil);
==========================================================================
SK_EntPnt_FYBA void LC_DelIdx(char *szSosFil)
LC_FcloseSos
Close an opened SOSI file in the file system
==========================================================================
Purpose:
This function is used to ensure that a file is updated and closed in the file system,
such that the SOSI file can be read from another program.
Note!
Only closes the file in the file system.
The file is still open in the base.
FYBA will automatically reopen the file when it is needed.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Pointer to FilAdm-block
Usage:
LC_FcloseSos(pFil);
==========================================================================
SK_EntPnt_FYBA void LC_FcloseSos(LC_FILADM *pFil)
7 Helper Functions
7.1 Base og File
LC_GetBaOm
Get the base area
==========================================================================
Purpose:
Gets the base area for the active base (Summary of the headers).
Sequential files are not included.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
unsigned short usLag i Choose which "layers" to be searched in.
LC_FRAMGR and /or LC_BAKGR
(Use "|" to combine.)
double *nva u Lower left east
double *nvn u Lower left north
double *oha u Upper right east
double *ohn u Upper right north
short sStatus r UT_TRUE=OK, UT_FALSE=No file
Usage:
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
Get area from the file header
==========================================================================
Purpose:
Hent område for en SOSI-fil i basen.
Fungerer ikke mot sekvensielle filer.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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 file number
==========================================================================
Purpose:
Sjekker alle filer i aktuell base om noen av den har det gitte filnavnet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
char fil_navn i Filnavn
LC_FILADM *pFil r Peker til FilAdm for filen. (NULL = ukjent fil)
Usage:
pFil = LC_GetFiNr(fil_navn);
==========================================================================
SK_EntPnt_FYBA LC_FILADM *LC_GetFiNr(const char *fil_navn)
LC_GetFiNa
Get filename
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
char *fil_navn r Peker til filnavn
Usage:
fil_navn = LC_GetFiNa(pFil);
==========================================================================
SK_EntPnt_FYBA char *LC_GetFiNa(LC_FILADM *pFil)
LC_GetTegnsett
Get encoding
==========================================================================
Purpose:
Finne tegnsett i ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
sStatus = LC_GetTegnsett(&sTegnsett);
==========================================================================
SK_EntPnt_FYBA short LC_GetTegnsett(short *psTegnsett)
LC_InqLag
Get which layer the active group belongs to
==========================================================================
Purpose:
Finn hvilket lag aktuell gruppe tilhører.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
unsigned short *usLag u "Lag": LC_FRAMGR eller LC_BAKGR
short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
Usage:
status = LC_InqLag(&usLag);
==========================================================================
SK_EntPnt_FYBA short LC_InqLag(unsigned short *usLag)
LC_InqFilLag
Get which layer a file belongs to
==========================================================================
Purpose:
Finn hvilket lag en fil tilhører.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
unsigned short usLag r "Lag": LC_FRAMGR eller LC_BAKGR
Usage:
usLag = LC_InqFilLag(pFil);
==========================================================================
SK_EntPnt_FYBA unsigned short LC_InqFilLag(LC_FILADM *pFil)
LC_SetFilLag
Set which layer a file belongs to
==========================================================================
Purpose:
Velg hvilket lag en fil tilhører.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
unsigned short usLag i "Lag": LC_FRAMGR eller LC_BAKGR
Usage:
LC_SetFilLag(pFil,LC_FRAMGR);
==========================================================================
SK_EntPnt_FYBA void LC_SetFilLag(LC_FILADM *pFil,unsigned short usLag)
LC_FiLastGr
Find the last group in the file
==========================================================================
Purpose:
Finner gruppenummer for siste gruppe i filen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
bgr long r Gruppenummer
Usage:
bgr = LC_FiLastGr(pFil);
==========================================================================
SK_EntPnt_FYBA long LC_FiLastGr(LC_FILADM *pFil)
LC_ErFilBase
Check if the file is in the base
==========================================================================
Purpose:
Sjekker om en fil er i basen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------
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.
Usage:
ist = LC_ErFilBase(fil);
==========================================================================
SK_EntPnt_FYBA short LC_ErFilBase(const char *fil)
LC_ErKoordsysLik
Check that all files in the base have the same coordinate system
=======================================================================
Purpose:
Sjekk at alle filene i basen har samme koordinatsystem.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------
short status r Status: UT_TRUE = KOORDSYS er lik.
UT_FALSE = KOORDSYS er IKKE lik.
Usage:
ist = LC_ErKoordsysLik();
=======================================================================
SK_EntPnt_FYBA short LC_ErKoordsysLik(void)
LC_ErVertdatumLik
Check that all files have the same VERT-DATUM
=======================================================================
Purpose:
Sjekk at alle filene i basen har samme VERT-DATUM.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------
short status r Status: UT_TRUE = VERT-DATUM er lik.
UT_FALSE = VERT-DATUM er IKKE lik.
Usage:
ist = LC_ErVertdatumLik();
=======================================================================
SK_EntPnt_FYBA short LC_ErVertdatumLik(void)
LC_Backup
Make backup of a SOSI file
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
char *pszBackupPath i Katalognavn for lagring av backup.
short sStatus r UT_TRUE = OK
UT_FALSE = Feil.
Usage:
sStatus = LC_Backup(pFil, szBackupPath);
==========================================================================
SK_EntPnt_FYBA short LC_Backup(LC_FILADM *pFil, const char *pszBackupPath)
LC_GetNgisLag
Get NGIS-LAG from a file
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
pszNgisLag = LC_GetNgisLag(pFil);
==========================================================================
SK_EntPnt_FYBA char* LC_GetNgisLag(LC_FILADM *pFil)
LC_SetFilType
Set file type for a SOSI file
==========================================================================
Purpose:
Setter filtype for en fil.
Denne rutinen er primært tenkt brukt i GabEdit hvor det er behov for å
definere flere typer arbeidsfil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
LC_SetFilType(pFil,type);
=============================================================================
SK_EntPnt_FYBA void LC_SetFilType(LC_FILADM *pFil, short sType)
LC_GetFilType
Get file type for a SOSI file
==========================================================================
Purpose:
Finner filtypen for en fil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
type = LC_GetFilType(pFil);
=============================================================================
SK_EntPnt_FYBA short LC_GetFilType(LC_FILADM *pFil)
LC_ErLik_Avrundet
Rund av og sjekk om sammenfallende punkt
==========================================================================
Purpose:
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)
Parameters:
Type Name I/O Explanation
---------------------------------------------------------------------------
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
Usage:
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)
==========================================================================
Purpose:
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)
Parameters:
Type Name I/O Explanation
---------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Sjekker om aktuell gruppe er referert fra andre grupper.
Parameters:
Type Name I/O Explanation
---------------------------------------------------------------------------
bool bReferert r Det finnes referanser til gruppen
Usage:
bReferert = LC_ErReferert();
===========================================================================
SK_EntPnt_FYBA bool LC_ErReferert(void)
7.2 SOSI Group
LC_GetGrNr
Hent gruppe-nummer
==========================================================================
Purpose:
Henter gruppenummer for aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pBgr iu Peker til gruppestruktur der gruppenummer lagres
short status r Status UT_TRUE=OK, UT_FALSE=ingen aktuell gruppe
Usage:
status = LC_GetGrNr(&Bgr)
==========================================================================
SK_EntPnt_FYBA short LC_GetGrNr(LC_BGR * pBgr)
LC_GetGrPara
Hent gruppe-parametre
==========================================================================
Purpose:
Henter diverse opplysninger om aktuell gruppe.
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
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)
Usage:
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
=============================================================================
Purpose:
Henter diverse opplysninger om gitt gruppenummer.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
=============================================================================
Purpose:
Henter peker til FilAdm for aktuell gruppe.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
LC_FILADM * *ppFil u Peker til FilAdm-peker
short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
Usage:
status = LC_GetGrFi(&pFil);
=============================================================================
SK_EntPnt_FYBA short LC_GetGrFi(LC_FILADM **ppFil)
LC_SetEndringsstatus
Setter endringsstatus for aktuell gruppe
==========================================================================
Purpose:
Setter endringsstatus for aktuell gruppe.
NB! Denne rutinen bør normalt ikke brukes av vanlige klient-program!
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
LC_dg_SetEndringsstatus(END_KOPI);
=============================================================================
SK_EntPnt_FYBA void LC_SetEndringsstatus(short sStatus)
7.3 Header, active group
LC_NyttHode
Lager nytt hode
==========================================================================
Purpose:
Legger inn et standard SOSI-filhode i ginfo i aktuell gruppe.
Parameters:
ingen
Usage:
LC_NyttHode();
==========================================================================
SK_EntPnt_FYBA void LC_NyttHode(void)
LC_TestHode
Tester SOSI-hodet
==========================================================================
Purpose:
Sjekker at ginfo i aktuell gruppe er et lovlig SOSI-filhode.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short ist r status: UT_TRUE=OK, UT_FALSE=feil
Usage:
ist = LC_TestHode();
==========================================================================
SK_EntPnt_FYBA short LC_TestHode(void)
LC_GetOmr
Finner ..OMRÅDE i hodet
==========================================================================
Purpose:
Henter ut område fra ginfo i aktuell gruppe.
OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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).
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
==========================================================================
Purpose:
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
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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 Header, directly from SOSI-file
HO_New
Lager nytt hode
=========================================================================
Purpose:
Genererer et nytt SOSI-filhode.
Hvis område ikke har noen utstrekning justeres
dette med 1 meter i hver retning.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
=============================================================================
Purpose:
Sjekker at filen er en SOSI-fil, og finner posisjonen for .SLUTT.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
char *pszFil i Fullstendig filnavn
UT_INT64 *sluttpos u Posisjon for .SLUTT
short ist r Status: UT_TRUE = OK
UT_FALSE = feil
Usage:
ist = HO_TestSOSI(pszFil,&sluttpos);
=============================================================================
SK_EntPnt_FYBA short HO_TestSOSI(const char *pszFil,UT_INT64 *sluttpos)
HO_GetKvalitet
Finner kvalitetsopplysninger
=============================================================================
Purpose:
Finne kvalitetsopplysninger i filhode.
(Ikke aktuellt etter SOSI v. 4.00.)
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Finne tegnsett i filhodet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
sStatus = HO_GetTegnsett(pszFil,&sTegnsett);
==========================================================================
SK_EntPnt_FYBA short HO_GetTegnsett(const char *pszFil,short *psTegnsett)
HO_GetVal
Finn verdien til et SOSI-navn
=============================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
Henter ut innholdet under ..TRANSPAR fra fra filhodet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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).
Usage:
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
=============================================================================
Purpose:
Henter områdeangivelsen fra filhodet.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
Sjekker faktisk tegnsett i .HODE.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
sStatus = HO_SjekkTegnsett(fpek,tegnsett);
=============================================================================
SK_EntPnt_FYBA short HO_SjekkTegnsett(const char *pszFil,short *psTegnsett)
8 New Group
LC_NyGr
Ny gruppe i basen
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
gnavn = LC_NyGr (pFil,sosi,&Bgr,&snr);
=============================================================================
SK_EntPnt_FYBA short LC_NyGr (LC_FILADM *pFil,char *sosi,LC_BGR * pBgr,long *snr)
9 Direct Read/Write
LC_RxGr
Les gruppe fra base
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
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.
Usage:
LC_WxGr(k_stat)
==========================================================================
SK_EntPnt_FYBA short LC_WxGr(short k_stat)
10 Sequential Read/Write
LC_RsGr
Les gruppe sekvensielt
==========================================================================
Purpose:
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.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
=============================================================================
Purpose:
Skriver aktuell gruppe til ekstern, sekvensiell SOSI-fil.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
Usage:
LC_WsGr(pFil);
=============================================================================
SK_EntPnt_FYBA void LC_WsGr(LC_FILADM *pFil)
LC_WsGrPart
Skriv del av gruppe sekvensiellt
==========================================================================
Purpose:
Skriver en del av aktuell gruppe til ekstern, sekvensiell SOSI-fil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
=============================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short oppdatert r Skrivestatus (1=OK, 0=Det er ikke plass
til å skrive hodet)
Usage:
ist = LC_EndreHode(pFil);
=============================================================================
SK_EntPnt_FYBA short LC_EndreHode(LC_FILADM *pFil)
11 Delete Group
LC_DelGr
Slett gruppe
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short sStatus r Status: UT_TRUE = OK
UT_FALSE = feil, ikke sletta
Usage:
sStatus = LC_DelGr();
==========================================================================
SK_EntPnt_FYBA short LC_DelGr(void)
12 Storing Back the Buffered Info to a SOSI File
LC_Save
Tøm skrivekøa
==========================================================================
Purpose:
Skriver gruppene som ligger i skrivekø ut til SOSI-fil.
Parameters: ingen
Usage:
LC_Save();
==========================================================================
SK_EntPnt_FYBA void LC_Save(void)
13 Reserve Space in the Ring Buffer
These are functions to allocate space for Ginfo/coordinates in the
ring buffer, and they must be called before data is added to the
ring buffer with functions such as LC_PuGi and LC_PuTK
Note: The active data group must first be read/selected with the
functions LC_RxGr or LC_NyGr
LC_InsGiL
Skyt inn GINFO-linjer
=============================================================================
Purpose:
Skyter inn linjer GINFO-delen i en gruppe.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
ngi = LC_InsGiL(linje, antall);
=============================================================================
SK_EntPnt_FYBA short LC_InsGiL(short linje, short antall)
LC_AppGiL
Heng på en GINFO-linje
=============================================================================
Purpose:
Henger på en linje i GINFO-delen i en gruppe.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
short ngi r Antall GINFO-linjer i gruppen etter utvidelsen.
(Linjenumret på den tilføyde linjen.)
Usage:
ngi = LC_AppGiL();
=============================================================================
SK_EntPnt_FYBA short LC_AppGiL()
LC_InsKoL
Skyt inn koordinatlinjer
==========================================================================
Purpose:
Skyter inn linjer koordinatdelen i en gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
nko = LC_InsKoL(linje, antall);
==========================================================================
SK_EntPnt_FYBA long LC_InsKoL(long linje, long antall)
LC_AppKoL
Heng på en koordinatlinje
==========================================================================
Purpose:
Henger på en linje i koordinatdelen i en gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long nko r Antall koordinater i gruppen etter utvidelsen.
Usage:
nko = LC_AppKoL();
==========================================================================
SK_EntPnt_FYBA long LC_AppKoL()
LC_DelGiL
Fjern GINFO-linjer
=============================================================================
Purpose:
Fjerner linjer i GINFO-delen i en gruppe.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
ngi = LC_DelGiL(linje, antall);
=============================================================================
SK_EntPnt_FYBA short LC_DelGiL(short linje, short antall)
LC_DelKoL
Fjern koordinatlinjer
=============================================================================
Purpose:
Fjerner linjer koordinatdelen i en gruppe.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
nko = LC_DelKoL(linje, antall);
=============================================================================
SK_EntPnt_FYBA long LC_DelKoL(long linje, long antall)
14 Add Data to the Ring Buffer
These are functions to add data to the ring buffer.
The functions interact with the current data group.
It is assumed that there is allocated place with the functions in the
previous chapter.
(LC_AppGiL,LC_InsGiL,LC_AppKoL,LC_InsKoL)
Note: After having added all the desired data, it is required to save
the data with LC_WxGr.
14.1 Copying group
LC_CopyGr
Kopier gruppe
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
===========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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 Group Information
LC_PutGi
Put GINFO-linje
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short lin_nr i Linjenummer i GINFO (1 er første linje)
char *ginfo i GINFO-streng avslutta med '/0'
Usage:
LC_PutGi(lin_nr,ginfo);
==========================================================================
SK_EntPnt_FYBA void LC_PutGi(short lin_nr, const char *pszGinfo)
LC_PutGP
Put GINFO-parameter
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
==========================================================================
Purpose:
Legger til et SOSI-navn med verdi i GINFO.
Lik LC_PutGP, men legger alltid til ny linje i ginfo.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Oppdaterer GINFO med ..KVALITET
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
Parameters:
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.
Usage:
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
==========================================================================
Purpose:
Oppdaterer PINFO med ...KVALITET
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Oppdaterer ..NGIS-FLAGG i GINFO og ajourfører interne tabeller.
Hvis endring = O_GINFO oppateres tabellene i forhold til
eksisterende GINFO.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
LC_OppdaterEndret(O_ENDRET);
=============================================================================
SK_EntPnt_FYBA void LC_OppdaterEndret(short endring)
LC_DelGiName
Fjerner egenskap fra GINFO
==========================================================================
Purpose:
Fjerner alle forekomster av gitt egenskap (SOSI-navn) fra GINFO.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
char *pszEgenskapName i SOSI-navn som skal slettes
short ngi r Antall GINFO-linjer i gruppen etter setting
Usage:
ngi = LC_DelGiName("..RADIUS");
==========================================================================
SK_EntPnt_FYBA short LC_DelGiName(char *pszEgenskapName)
LC_FinnNivo
Beregn nivå
==============================================================
Purpose:
Teller antall prikker i starten på egenskapsnavn.
PARAMETERLISTE:
Type Name I/O Merknad
-------------------------------------------------------------
char *pszGinfo i Streng med egenskapsnavn i starten
short sNivo r Antall prikker
Usage:
sNivo = LC_FinnNivo(pszGinfo);
================================================================
SK_EntPnt_FYBA short LC_FinnNivo(const char * pszName)
14.3 Serial Number and Reference Number
LC_PutSn
Put Serienummer
==========================================================================
Purpose:
Legger inn nytt serienummer på aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long snr i Serienummer
Usage:
LC_PutSn(snr);
==========================================================================
SK_EntPnt_FYBA void LC_PutSn(long snr)
LC_PutRef
Legger inn referanser i GINFO
==========================================================================
Purpose:
Legger inn et array med referanser til GINFO i aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
ngi = LC_PutRef(ref_array,ant_ref);
==========================================================================
SK_EntPnt_FYBA short LC_PutRef(long *ref_array,long ant_ref)
14.4 Coordinates
LC_PutTK
Put koordinat
==========================================================================
Purpose:
Legger inn et punkts koordinater (n,ø) i meter i terreng
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
LC_PutTK(punkt_nr,aust,nord);
==========================================================================
SK_EntPnt_FYBA void LC_PutTK(long punkt_nr,double aust,double nord)
LC_PutTH
Put høyde
==========================================================================
Purpose:
Legger inn et punkts høyde i meter i terreng
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
LC_PutTH(punkt_nr,hoyde);
==========================================================================
SK_EntPnt_FYBA void LC_PutTH(long punkt_nr, double hoyde)
LC_PutTD
Put dybde
==========================================================================
Purpose:
Legger inn et punkts dybde i meter i terreng
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
LC_PutTD(punkt_nr,dybde);
==========================================================================
SK_EntPnt_FYBA void LC_PutTD(long punkt_nr, double dybde)
14.5 Connection Nodes
LC_PutKp
Put knutepunkt
==========================================================================
Purpose:
Legger inn knutepunktverdi i punktet. Ny verdi skrives over eksisterende
verdi. (Multiple KP er ikke mulig.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
short kp i Knutepunkt (lovlig verdi 0 - SHRT_MAX)
kp == 0 fjerner knutepunkt.
Usage:
LC_PutKp(punkt_nr,kp);
==========================================================================
SK_EntPnt_FYBA void LC_PutKp(long punkt_nr, short kp)
14.6 Node information
LC_PutPi
Put PINFO
==========================================================================
Purpose:
Legger inn hele punktinformasjonen på angitte punkt
Ny verdi skriver over eksisterende verdi.
Verdi "" fjerner eksisterende PINFO.
Knutepunkt legges inn med LC_PutKp.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
sStatus = LC_PutPi(punkt_nr,pinfo);
==========================================================================
SK_EntPnt_FYBA short LC_PutPi(long punkt_nr, const char *pinfo)
15 Get Data from the Ring Buffer
These are functions to get data from the ring buffer.
They interact with the current data group.
The current data group may be chosen either by reading from a SOSI file
or by establishing a new SOSI file.
15.1 General Value for a SOSI Name
Regarding the general mechanism in the SOSI file where the information
can either be in HODE, GINFO or PINFO, there's a need for a functions that
checks everything to find the actual value for this group.
This applies mainly for quality information, date etc.
15.2 Group Information
LC_GetGi
Get GINFO-linje
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short lin_nr i Linjenummer i GINFO (1 er første linje)
char *ginfo r Peker til GINFO-streng avslutta med '/0'
Usage:
ginfo = LC_GetGi(lin_nr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetGi(short lin_nr)
LC_GetGP
Get GINFO-parameter
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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 Serial Number and Reference Number
LC_GetSn
Get serienummer
==========================================================================
Purpose:
Henter serienummer for aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------
long snr r Serienr. (INGEN_GRUPPE = ingen aktuell gruppe)
Usage:
snr = LC_GetSn();
==========================================================================
SK_EntPnt_FYBA long LC_GetSn(void)
LC_GetRef
Hent referanser fra GINFO
==========================================================================
Purpose:
Henter ut et array med referanser fra GINFO i aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long ant_ref r Antall referanser i GINFO.
OBS! Start- og sluttparantes for øy blir regnet
som egne referanser.
Usage:
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
==========================================================================
Purpose:
Initierer status for GetRefFlate.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_GRF_STATUS * pRefStat iu Struktur med statusopplysninger.
Usage:
LC_InitGetRefFlate(pGrfStat,pBgr);
==========================================================================
SK_EntPnt_FYBA void LC_InitGetRefFlate(LC_GRF_STATUS * pGS)
LC_GetRefFlate
Hent referanser for flate fra GINFO
==========================================================================
Purpose:
Henter ut et array med referanser for flate fra GINFO i aktuell gruppe.
Parameters:
Type Name I/O Explanation
-------------------------------------------------------------------------
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.
Usage:
#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
=======================================================================
Usage:
sRefLin = LC_ErLinjeRefLin(gp,sRefLin);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
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 Special get functions
LC_GetBuePar
Beregner parametre som definerer sirkelbue
============================================================================
Purpose: 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.
Parameters:
Type Name I/O Explanation
----------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Henter ut nødvendige opplysninger om en bue.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Henter ut nødvendige opplysninger om en buep.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Henter ut nødvendige opplysninger om en sirkel.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
ist = LC_GetSirkel(&as,&ns,&radius);
==========================================================================
SK_EntPnt_FYBA short LC_GetSirkel(double *as,double *ns,double *radius)
LC_GetSirkelp
Hent silkelp
==========================================================================
Purpose:
Henter ut nødvendige opplysninger om en sirkelp.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finne kvalitetsopplysninger i filhode eller vanlig gruppe.
(Tolker aktuell gruppe.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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 Coordinates
LC_GetTK
Get koordinat
==========================================================================
Purpose:
Henter et punkts koordinater (ø,n) i meter i terreng
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Henter tabell med koordinater (ø,n) i meter i terreng
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Henter et punkts høyde i meter i terreng. (Henter BARE FRA PUNKTET.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
hoyde = LC_GetTH(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetTH(long punkt_nr)
LC_GetArrayTH
Hent tabell med høyder
==========================================================================
Purpose:
Henter tabell med høyder
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Henter et punkts høyde i meter i terreng. (Henter fra punktet eller fra
GINFO.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
hoyde = LC_GetHoyde(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetHoyde(long punkt_nr)
LC_GetTD
Get dybde
==========================================================================
Purpose:
Henter et punkts dybde i meter i terreng. (Henter BARE FRA PUNKTET.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
dybde = LC_GetTD(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetTD(long punkt_nr)
LC_GetDybde
Get dybde
==========================================================================
Purpose:
Henter et punkts dybde i meter i terreng. (Henter fra punktet eller fra
GINFO.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
dybde = LC_GetHoyde(punkt_nr);
==========================================================================
SK_EntPnt_FYBA double LC_GetDybde(long punkt_nr)
15.6 Connection Nodes
LC_GetKp
Get knutepunkt
==========================================================================
Purpose:
Henter knutepunktverdi i punktet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
short kp_type r Knutepunkttype (1-4095)
(0 = punktet har ikke knutepunkt)
Usage:
kp = LC_GetKp(punkt_nr);
==========================================================================
SK_EntPnt_FYBA short LC_GetKp(long punkt_nr)
LC_FinnKp
Finn knutepunkt
==========================================================================
Purpose:
Skanner gruppe, og finner punkt som er knutepunkt.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
status = LC_FinnKp(&forste_punkt,siste_punkt,kp);
==========================================================================
short LC_FinnKp(long *forste_punkt,long siste_punkt,short *kp)
15.7 Node Information
LC_GetPi
Get PINFO
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
long punkt_nr i Punktnummer (1 er første punkt)
char *pinfo r Peker til punktinformasjon eksklusiv knutepunkt
Usage:
pinfo = LC_GetPi(punkt_nr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetPi(long punkt_nr)
LC_InitPP
Initier PINFO-søk
==========================================================================
Purpose:
Initierer søk etter PINFO.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
.
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
char pszSosiName 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.
Usage:
pszVerdi = LC_GetPiVerdi(pszSosiName,lPnr,&sSettNr);
==========================================================================
SK_EntPnt_FYBA char *LC_GetPiVerdi(const char *pszSosiName,long lPnr,short *sSettNr)
LC_TestPi
Sjekk om punkt har PINFO
==========================================================================
Purpose:
Sjekker om et punkt har PINFO i en eller annen form.
(PINFO, KP, høyde.)
Høyde handteres ikke foreløpig.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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"
Usage:
sStatus = LC_TestPi(punkt_nr,UT_TRUE);
==========================================================================
SK_EntPnt_FYBA short LC_TestPi(long punkt_nr,short sTestHoyde)
15.8 Special get operations
LC_GetCurEnhet
Hent enhet på angitt nivå
==========================================================================
Purpose:
Henter ut enhet fra filhode eller GINFO
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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å
==========================================================================
Purpose:
Finne kvalitetsopplysninger på angitt nivå, hode ginfo eller pinfo.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
=============================================================================
Purpose:
Henter objekttype for gitt gruppenummer.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
LC_BGR *pBgr i Gruppenummer det ønskes opplysninger om.
char *pszObjtype r OBJTYPE
NULL hvis gruppen ikke finnes
Usage:
pszObjtype = LC_GetObjtypeBgr(pBgr);
=============================================================================
SK_EntPnt_FYBA const char *LC_GetObjtypeBgr(LC_BGR * pBgr)
LC_GetElementName
Hent elementnavn
==========================================================================
Purpose:
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
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Peker til FilAdm
short sNameNr 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 *pszName r Peker til elementnavn,
NULL = ukjent fil eller ulovlig linjenummer
Usage:
// Går gjennom alle navnene ut over de forhåndsdefinerte navnene.
short sNameNr = L_KP+1;
while ((pszName = LC_GetElementName(pFil,sNameNr)) != NULL)
{
// Gjør noe med navnet
...
++sNameNr;
}
=============================================================================
SK_EntPnt_FYBA const char *LC_GetElementName(LC_FILADM *pFil,short sNameNr,bool *bBrukt)
16 Iterating in the Base
LC_InitNextFil
Initier finn neste fil
==========================================================================
Purpose:
Initierer pFil for bruk i finn neste fil.
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
LC_FILADM **ppFil u Peker til FilAdm-peker
Usage:
LC_InitNextFil(&pFil)
==========================================================================
SK_EntPnt_FYBA void LC_InitNextFil(LC_FILADM **ppFil)
LC_NextFil
Finn neste fil
==========================================================================
Purpose:
Finn neste fil i aktuell base.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
LC_FILADM *pFil;
Denne løkka går gjennom alle framgrunns-filene i basen
LC_InitNextFil(&pFil)
while (LC_NextFil(&pFil,LC_FRAMGR)) {
pszFilName = LC_GetFiNa(pFil);
.
Behandle filnavnet
.
}
==========================================================================
SK_EntPnt_FYBA short LC_NextFil(LC_FILADM **ppFil,unsigned short usLag)
LC_InitNextBgr
Initier finn neste gruppe
==========================================================================
Purpose:
Initierer Bgr for bruk i finn neste gruppe.
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
LC_BGR * pBgr iu Peker til gruppestruktur
Usage:
LC_InitNextBgr(&Bgr)
==========================================================================
SK_EntPnt_FYBA void LC_InitNextBgr(LC_BGR * pBgr)
LC_NextBgr
Finn neste gruppe
==========================================================================
Purpose:
Finn neste gruppe i aktuell base.
Sekvensielle filer blir ikke håndtert.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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 Geographical Search
LC_GetGrWin
Hent omskrevet rektangel for gruppe
==========================================================================
Purpose:
Henter omskrevet rektangel for gitt gruppe.
For flater er refererte grupper medregnet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
Definerer punkt for geografisk søk på flate.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
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
=============================================================================
Purpose:
Finner første gruppe i det definerte området for flatesøk.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
Se under LC_SBFlate.
=============================================================================
SK_EntPnt_FYBA short LC_FFFlate(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
LC_FNFlate
Finn neste ved flatesøk
==========================================================================
Purpose:
Finner neste gruppe i det definerte området for flatesøk.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
=============================================================================
Purpose:
Definerer geografisk område for geografisk søk.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Finner første gruppe i det definerte området for kombinert geografisk søk.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner neste gruppe i det definerte området for geografisk søk.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finn alle i geografisk søkeområde.
Tilslag merkes i brukttabellen kolonne BT_GEOSOK (15).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
long lAntall r Antall funnet.
Usage:
.
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
==========================================================================
Purpose:
Finner første gruppe i det definerte området for kombinert geografisk søk.
Søker bare i en gitt fil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner neste gruppe i det definerte området for geografisk søk.
Søker bare i en gitt fil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
=======================================================================
Usage:
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_GEO_STATUS * pGeoStat i Peker til struktur for søkestatus
Purpose:
Avslutter geografisk søk, og frigir kjede med søkeresultat.
=======================================================================
SK_EntPnt_FYBA void LC_AvsluttSok(LC_GEO_STATUS * pGeoStat)
LC_WTst
Vindustest
==========================================================================
Purpose:
Sjekk om aktuell gruppe berører gitt vindu.
Tar hensyn til gruppenavnet. Handterer (PUNKT, LINJE, KURVE, BUE,
BUEP, SIRKEL, SIRKELP, SVERM, TRASE ).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
.
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
==========================================================================
Purpose:
Sjekker om gitt punkt ligger innenfor polygon angitt av aktuell gruppe.
Forutsetter at tabellen danner et lukket polygon
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
.
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
==========================================================================
Purpose:
Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
av aktuell gruppe.
Forutsetter at tabellen danner et lukket polygon
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
ist = LC_PTstOmkrets(a,n);
==========================================================================
SK_EntPnt_FYBA short LC_PTstOmkrets(double a,double n)
18 Serial Number Search
LC_SBSn
Sett søkegrense for serienummer
==========================================================================
Purpose:
Setter søkegrenser for serienummersøk.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
Endrer IKKE "current gruppe".
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner alle grupper i fil/serienummer søkeområdet og merker i kolonne
BT_SNRSOK i brukttabellen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
long antall r Antall grupper funnet.
Usage:
antall_funnet = LC_FASn(&SnrAdm);
=============================================================================
SK_EntPnt_FYBA long LC_FASn(LC_SNR_ADM * pSnrAdm)
LC_FFSn
Finn første serienummer
=============================================================================
Purpose:
Finner første gruppe i fil/serienummer søkeområdet.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
sstat = LC_FFSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FFSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FNSn
Finn neste serienummer
==========================================================================
Purpose:
Finner neste gruppe i fil/serienummer søkeområdet.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
sstat = LC_FNSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FNSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FPSn
Finn forige serienummer
=============================================================================
Purpose:
Finner forrige gruppe i fil/serienummer søkeområdet.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
sstat = LC_FPSn(&SnrAdm,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FPSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
LC_FLSn
Finn siste serienummer
=============================================================================
Purpose:
Finner siste gruppe i fil/serienummer søkeområdet.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner første gruppe som er merka i gitt kolonne i brukttabellen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner neste gruppe også er merka i gitt kolonne i brukttabellen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner forrige gruppe i fil/serienummer søkeområdet, som også er merka i
gitt kolonne i brukttabellen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Finner siste gruppe i fil/serienummer søkeområdet som også er merka i
gitt kolonne i brukttabellen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
sstat = LC_FLSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
================================================================================
SK_EntPnt_FYBA short LC_FLSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
19 Property Subset
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
==========================================================================
Purpose:
Initierer query mot GINFO/PINFO.
Tildeler administrasjonsblokk for utvalg.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_UT_ADM *UtAdm r Peker til administrasjonsblokk for utvalg.
Usage:
pUtAdm = LC_OpenQuery();
==========================================================================
SK_EntPnt_FYBA LC_UT_ADM *LC_OpenQuery(void)
LC_CloseQuery
Avslutter query
==========================================================================
Purpose:
Avslutter query mot GINFO/PINFO.
Frigir minne brukt til administrasjon og utvalgstabeller.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_UT_ADM *UtAdm i Peker til administrasjonsblokk for utvalg.
Usage:
LC_CloseQuery(pUtAdm);
==========================================================================
SK_EntPnt_FYBA void LC_CloseQuery(LC_UT_ADM * pUtAdm)
LC_PutQueryLine
Legg inn en query-linje
==========================================================================
Purpose:
Legger inn og tolker en linje med query-tekst.
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
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)
Usage:
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
==========================================================================
Purpose:
Legger inn et regelnavn på siste linje i utvalgstabellen.
(Nameet blir intern konvertert til "store" bokstaver.)
Parameters:
Type Name I/O Explanation
------------------------------------------------------------------------
LC_UTVALG *pU i Peker til utvalg
char *navn i Regelnavn.
Usage:
LC_PutQueryRegel(pU,navn);
=============================================================================
SK_EntPnt_FYBA void LC_PutQueryRegel(LC_UTVALG * pU,const char *navn)
LC_LesUtvalg
Les utvalg i kom.filen
=============================================================================
Purpose:
Leser og tolker gruppe og punktutvalg på kommandofilen og legger i tabell.
Forutsetter at filen er åpnet på forhånd.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
sStatus = LC_LesUtvalg(pUtAdm,pKomFil);
=============================================================================
SK_EntPnt_FYBA short LC_LesUtvalg(LC_UT_ADM *pUtAdm,const char *pszKomFil)
LC_GetUtRegelName
Henter regelnavn
=============================================================================
Purpose:
Henter regelnavn for at programmet utenfor skal kunne sjekke
at det er tilgjengelig videre behandling av alle definerte navn.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
regelpeker = LC_GetUtRegelName(pUtAdm,&ist);
=============================================================================
SK_EntPnt_FYBA char *LC_GetUtRegelName(LC_UT_ADM *pUtAdm,short *ist)
LC_GruppeUtvalg
GINFO-utvalg
==========================================================================
Purpose:
Sjekker GINFO-delen av aktuell gruppe mot alle gruppeutvalg fra fil.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
pszUtvalgsName = 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
=============================================================================
Purpose:
Sjekker PINFO-delen av aktuell gruppe for tilslag på PUNKT-UTVALG.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Finner et PINFO-UTVALG i kjeden av slike utvalg.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
char *pszName i Utvalgsnavn
LC_UTVALG * pUtvalg r Peker til utvalget. (NULL = ikke funnet)
Usage:
pUtvalg = LC_FinnPinfoUtvalg(pszName);
==========================================================================
SK_EntPnt_FYBA LC_UTVALG * LC_FinnPinfoUtvalg(LC_UT_ADM * pUtAdm,const char *pszName)
LC_PiTestUtvalg
Sjekk PUNKT/PINFO utvalg
==========================================================================
Purpose:
Sjekk om PINFO i aktuellt punkt tilfredstiller et punkt-utvalg.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
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
=============================================================================
Purpose:
Sjekker GINFO-delen av aktuell gruppe mot aktuellt query-oppsett.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
short status r Søkestatus, UT_TRUE=tilslag, UT_FALSE=ikke tilslag
Usage:
ist = LC_GiQuery(pUtAdm);
=============================================================================
SK_EntPnt_FYBA short LC_GiQuery(LC_UT_ADM *pUtAdm)
LC_FAGiQuery
Finn alle ved query mot ginfo
=============================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
=============================================================================
Purpose:
Bruker query-tekst for å finne linje der parameter skal hentes.
Parameters:
Type Name I/O Explanation
---------------------------------------------------------------------------
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
Usage:
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
==========================================================================
Purpose:
Henter største prioritet for gitt utvalgstype.
Parameters:
Type Name I/O Explanation
----------------------------------------------------------------------
LC_UT_ADM * pUA i Peker til administrasjonsblokk for utvalg.
short sMaxPrioritet r Max prioritet
Usage:
sMaxPrioritet = LC_InqMaxPrioritet(pUA);
==========================================================================
SK_EntPnt_FYBA short LC_InqMaxPrioritet(LC_UT_ADM * pUA)
LC_TestPrioritetBrukt
Tester om en prioritet er brukt
==========================================================================
Purpose:
Tester om en prioritet er brukt.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
sBrukt = LC_TestPrioritetBrukt(pUtAdm,sPrioritet);
==========================================================================
SK_EntPnt_FYBA short LC_TestPrioritetBrukt(LC_UT_ADM * pUtAdm,short sPrioritet)
LC_UtvalgPrioritet
Finn brukt prioritet
==========================================================================
Purpose:
Sjekker GINFO og PINFO for å finne hvilke prioriteter som "berører" aktuell
gruppe. Resultatet markeres i Gruppetabellen ulPrior.
Parameters:
Type Name I/O Explanation
---------------------------------------------------------------------------
LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
Usage:
LC_UtvalgPrioritet(pUtAdm);
===========================================================================
SK_EntPnt_FYBA void LC_UtvalgPrioritet(LC_UT_ADM *pUtAdm)
20 Marking Groups
LC_SetBt
Sett merke i brukttabellen
==========================================================================
Purpose:
Legg inn merke i brukttabellen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
short kolonne i Kolonne som skal merkes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
Usage:
LC_SetBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_SetBt(LC_BGR * pGr,short kolonne)
LC_ClrBt
Slett merke i brukttabellen
==========================================================================
Purpose:
Fjern merke i brukttabellen.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig BT_MIN_USER - BT_MAX_USER)
Usage:
LC_ClrBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_ClrBt(LC_BGR * pGr,short kolonne)
LC_GetBt
Hent merke i brukttabellen
==========================================================================
Purpose:
Hent merke i brukttabellen.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
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
Usage:
merke = LC_GetBt(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA short LC_GetBt(LC_BGR * pGr,short kolonne)
LC_EraseBt
Slett område i brukttabellen
==========================================================================
Purpose:
Blanker en eller flere kolonner i brukttabellen i aktuell base.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
LC_EraseBt(fra_kol,til_kol);
==========================================================================
SK_EntPnt_FYBA void LC_EraseBt(short fra_kol,short til_kol)
LC_CopyBt
Kopier kolonne i brukttabellen
==========================================================================
Purpose:
Kopier kolonne i brukttabellen.
Samtidig er det mulig å utføre logiske operasjoner mellom de to kolonnene.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
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.
==========================================================================
Purpose:
Setter flag for merking av referert gruppe.
Har innvirkning for virkemåten til:
LC_FAGeo, LC_FASn, og LC_FAGiQuery
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------
unsigned short modus i 0 = Ikke merk referert gruppe.
1 = Merk referert gruppe.
Usage:
LC_SetModusMerk(1);
==========================================================================
SK_EntPnt_FYBA void LC_SetModusMerk(unsigned short usModus)
LC_MerkGr
Merk en gruppe brukttabellen
==========================================================================
Purpose:
CH Merk aktuell gruppe i brukttabellen. Hvis flag for merking av referert
gruppe er satt, blir også eventuelle refererte grupper merket.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
lAntall = LC_MerkGr(sKolonne,sBryter);
==========================================================================
SK_EntPnt_FYBA long LC_MerkGr(short sKolonne,short sBryter)
21 Special Handling of Polygons
Polygon Description
Structs for polygon description.
This is a set of structs that are linked together in order to form complete description
of a polygon. Examples usage can be found in:
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
=======================================================================
Purpose:
Initierer polygon-struktur.
Parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
Usage:
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
=======================================================================
Purpose:
Frigir minne som er allokert til polygon. (Både omkrets og hull.)
Parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
Usage:
LC_POLYGON Polygon;
LC_POL_FrigiPolygon(&Polygon);
=======================================================================
SK_EntPnt_FYBA void LC_POL_FrigiPolygon(LC_POLYGON *pPolygon)
LC_POL_InitOmkrets
Initierer polygon-omkrets
=======================================================================
Usage:
POL_OMKR YtrePolygon;
LC_POL_InitOmkrets(YtrePolygon);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/O 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
=======================================================================
Usage:
LC_POL_OMKR YtrePolygon;
pElement = LC_POL_LeggTilGruppeOmkrets(YtrePolygon,pBgr,sRetning,lSnr);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POL_OMKR * pPO I/O 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
=======================================================================
Usage:
LC_POL_OMKR YtrePolygon;
LC_POL_FjernGruppeOmkrets(&YtrePolygon,);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/O 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
=======================================================================
Usage:
LC_POL_OMKR YtrePolygon;
LC_POL_FjernSisteGruppeOmkrets(&YtrePolygon);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POL_OMKR * pPO I/O 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
=======================================================================
Usage:
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POL_OMKR *pPO I/O 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
=======================================================================
Usage:
LC_OY_ADM OyKjede;
LC_POL_InitOy(OyKjede);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/O 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
=======================================================================
Usage:
LC_OY_ADM OyKjede;
LC_POL_FrigiAlleOyer(OyKjede);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/O 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
=======================================================================
Usage:
LC_OY_ADM OyKjede;
LC_POL_FjernOy(OyKjede,OyElement);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_OY_ADM *pOA I/O Peikar til øyadministrasjonsblokka
LC_OY_ELEMENT *pOE I/O 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
=======================================================================
Usage:
LC_OY_ADM OyKjede;
LC_POL_LeggTilOy(&OyKjede,pPO);
Parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_OY_ADM *pOyKjede I/O 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
=======================================================================
Usage:
LC_POL_TestBrukt(pPolygon,&Bgr);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
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
=======================================================================
Purpose:
Legger inn referanser i GINFO, ut fra beskrivelse i struktur.
Parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Polygonbeskrivelse
short ngi r Antall linjer GINFO
Usage:
ngi = LC_POL_PutRef(pPolygon);
=======================================================================
SK_EntPnt_FYBA short LC_POL_PutRef(LC_POLYGON *pPolygon)
LC_POL_GetRef
Hent referanser for flate fra GINFO
==========================================================================
Purpose:
Henter referanser fra GINFO til struktur.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------
LC_POLYGON *pPolygon I Peker til adm. for polygonbeskrivelse
Usage:
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
==========================================================================
Purpose:
Henter referanser fra GINFO til struktur.
Rutinen initierer strukturen pPO, men frigir ikke eventuellt gammelt innhold.
Parameters:
Type Name I/O Explanation
-------------------------------------------------------------------------
LC_POL_OMKR *pPO; IU Peker til kjede som beskriver omkretsen.
Usage:
LC_POL_GetRefOmkrets(&OyPO);
==========================================================================
SK_EntPnt_FYBA void LC_POL_GetRefOmkrets(LC_POL_OMKR *pPO)
LC_POL_PTst
Polygontest
==========================================================================
Purpose:
Sjekker om gitt punkt ligger innenfor polygon angitt av pPolygon.
Forutsetter at pPolygon danner et lukket polygon.
Skifter ikke aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
.
==========================================================================
SK_EntPnt_FYBA short LC_POL_PTst(LC_POLYGON *pPolygon,double a,double n)
LC_POL_PTstOmkrets
Sjekk om punkt ligger inni polygonomkrets
==========================================================================
Purpose:
Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
av struktur.
Forutsetter at tabellen danner et lukket polygon
Skifter ikke aktuell gruppe.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
LC_POL_OMKR *pPO I/O 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
Usage:
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
=======================================================================
Usage:
LC_POL_Box(pPA,&nva,&nvn,&oha,&ohn);
parametere:
Type Name I/O Explanation
-----------------------------------------------------------------------
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 Various Functions
22.1 Calculations
LC_BerAreal
Calculate the area of the active group
==========================================================================
Purpose:
Beregner arealet av aktuell gruppe hvis denne er flate.
Referansene brukes for arealberegningen.
Tar hensyn til fradrag for øyer.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double areal u Beregnet areal
Usage:
areal = LC_BerAreal();
=============================================================================
SK_EntPnt_FYBA double LC_BerAreal(void)
LC_BerLengde
Calculate the horizonal length of the active group
==========================================================================
Purpose:
Beregn horisontal lengde av aktuell gruppe.
Tar ikke hensyn til høyde/dybde.
Referansene brukes IKKE i beregningen.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Usage:
areal = LC_BerLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerLengde(void)
LC_BerLengde3D
Calculate the diagonal length of the active group
==========================================================================
Purpose:
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.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double lengde u Beregnet lengde
bool beregnet r Status som viser om lengde er beregnet
Usage:
beregnet = LC_BerLengde3D(&skraa_lengde);
=============================================================================
SK_EntPnt_FYBA bool LC_BerLengde3D(double *skraa_lengde)
LC_BerAvgrensLengde
Calculate the length of the perimeter of a polygon
==========================================================================
Purpose:
Beregn lengden av avgrensningen av aktuell gruppe hvis denne er flate.
Både indre og ytre avgrensning beregnes.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double lengde u Beregnet areal
Usage:
lengde = LC_BerAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerAvgrensLengde(void)
LC_BerYtreAvgrensLengde
Calculate the length of the outer perimeter of a polygon
==========================================================================
Purpose:
Beregn lengden av ytre avgrensningen av aktuell gruppe hvis denne er flate.
Bare ytre avgrensning beregnes.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Usage:
lengde = LC_BerYtreAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerYtreAvgrensLengde(void)
LC_BerIndreAvgrensLengde
Calculate the length of the inner perimeter of a polygon
==========================================================================
Purpose:
Beregn lengden av indre avgrensningen av aktuell gruppe hvis denne er flate.
Bare indre avgrensning beregnes.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
double lengde u Beregnet lengde
Usage:
lengde = LC_BerIndreAvgrensLengde();
=============================================================================
SK_EntPnt_FYBA double LC_BerIndreAvgrensLengde(void)
LC_RoundKoord
Change the coordinates in the active group to the correct unit
===========================================================================
Purpose:
Endrer koordinatene i aktuell gruppe i buffer til valgt enhet.
(Rutinen blir utført fra LC_WxGr.)
Parameters: ingen
Usage:
LC_RoundKoord();
==============================================================================
SK_EntPnt_FYBA void LC_RoundKoord(void)
22.2 Structure Changes
LC_SnuGr
Invert group order
===========================================================================
Purpose:
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.)
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
short sStatus r Status: UT_TRUE = OK
UT_FALSE = feil, ikke splittet
Usage:
status = LC_SnuGr();
=============================================================================
SK_EntPnt_FYBA short LC_SnuGr(void)
LC_SammenfoyGr
Merge groups
==========================================================================
Purpose:
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.)
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
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
Split group
==========================================================================
Purpose:
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.)
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
sStatus = LC_SplittGr(sP1,sP2,&Bgr2);
==========================================================================
SK_EntPnt_FYBA short LC_SplittGr (long sP1,long sP2,LC_BGR * pBgr2)
LC_ErstattReferanse
Replace reference
==========================================================================
Purpose:
Erstatt referanse i alle grupper i gitt fil.
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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
Usage:
sStatus = LC_ErstattReferanse(pFil, lGmlSnr, lNyttSnr, bSammeRetning);
==========================================================================
SK_EntPnt_FYBA void LC_ErstattReferanse (LC_FILADM *pFil,long lGmlSnr,long lNyttSnr, bool bSammeRetning)
22.3 The Entire Base
LC_InqAntFiler
Get number of files in the base
==========================================================================
Purpose:
Finn antall filer i aktuell base.
Parameters:
Type Name I/O Explanation
-------------------------------------------------------------------
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.
Usage:
Finner antall framgrunnsfiler i basen
sAntall = LC_InqAntFiler(LC_FRAMGR);
==========================================================================
SK_EntPnt_FYBA short LC_InqAntFiler(unsigned short usLag)
22.4 Priority
LC_ClrPrioritet
Clear priority bit
==========================================================================
Purpose:
Slett prioritets-bit.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig 0 til LC_MAX_ANT_PRIOR-1)
Usage:
LC_ClrPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_ClrPrioritet(LC_BGR * pGr,short kolonne)
LC_SetPrioritet
Set priority bit
==========================================================================
Purpose:
Sett prioritets-bit.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
kolonne short i Kolonne som skal merkes.
(Lovlig 0 til LC_MAX_ANT_PRIOR-1)
Usage:
LC_SetPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA void LC_SetPrioritet(LC_BGR * pGr,short kolonne)
LC_InqPrioritet
Get priority bit
==========================================================================
Purpose:
Hent prioritets-bit.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
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)
Usage:
sAvPaa = LC_InqPrioritet(pGr,kolonne);
==========================================================================
SK_EntPnt_FYBA short LC_InqPrioritet(LC_BGR * pGr,short kolonne)
LC_ErasePrioritet
Erase priority bit
==========================================================================
Purpose:
Blank ut prioritets-bit.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
LC_BGR * pGr i Gruppenummer
Usage:
LC_ErasePrioritet(pGr);
==========================================================================
SK_EntPnt_FYBA void LC_ErasePrioritet(LC_BGR * pGr)
LC_EraseAllPrioritet
Erase all priority bits
==========================================================================
Purpose:
Blank ut alle prioritets-bit på alle gruppene i denne filen.
Parameters:
Name Type I/O Explanation
--------------------------------------------------------------------------
LC_FILADM *pFil i Filpeker
Usage:
LC_EraseAllPrioritet(pFil);
==========================================================================
SK_EntPnt_FYBA void LC_EraseAllPrioritet(LC_FILADM *pFil)
22.5 Quality
LC_FormatterKvalitet
Format for KVALITET
==========================================================================
Purpose:
Formater parameterstrengen for KVALITET.
Resultatet legges i en intern streng, og må kopieres over til andre
variabler før endring.
Parameters:
Type Name I/O Explanation
-------------------------------------------------------------------------
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.
Usage:
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 Table Handling
LC_InitTabel
Initialise the table system
=============================================================================
Purpose:
Initierer tabellsystemet og åpner filen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
.
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
Add one line to the table file (push)
=============================================================================
Purpose:
Legg inn en linje fra tabellfilen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
ist = LC_PutTabel(linje,(void *)&buffer);
=============================================================================
SK_EntPnt_FYBA short LC_PutTabel(long linje,void *buffer)
LC_GetTabel
Get one line from the table file
=============================================================================
Purpose:
Henter en linje fra tabellfilen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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)
Usage:
ist = LC_GetTabel(linje,(void *)&buffer);
=============================================================================
SK_EntPnt_FYBA short LC_GetTabel(long linje,void *buffer)
LC_CloseTabel
Close the table system
=============================================================================
Purpose:
Avslutter tabellsystemet og stenger og sletter filen.
Tabellen kan nå åpnes på nytt for annen bruk.
Parameters: ingen
Usage:
LC_CloseTabel();
=============================================================================
SK_EntPnt_FYBA void LC_CloseTabel(void)
22.7 Message Handling
FYBA has a feature which makes it possible to let the calling program handle the
messages for the user.
This is made up of callback-functions which are called from FYBA for error message
handling and to present the progress while the indices are being built.
One example implementation can be found in Fyba_Callback.cpp.
In order to have a good user interface, these functions should be changed such that
they use the message and error handling system that is used by the main program.
If FYBA is used as a DLL, the message handling functions must be registered with
the following functions:
LC_SetErrorHandler
Set error handler
=============================================================================
Purpose:
Registrer feilmeldingsrutine.
Feilmeldingsrutinen blir kallt hvis det oppstår feil.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
void (*f) (short ,char *,char *) i Peker til feilmeldingsrutine
Usage:
LC_SetErrorHandler(ErrorHandler);
Feilmeldingsrutinen skal ha følgende definisjon:
void ErrorHandler(short feil_nr,const char *logtx,const char *vartx);
Med følgende Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Set start message handler
=============================================================================
Purpose:
Registrer initieringsrutine.
Initieringsrutinen blir kalt for å starte visning av framdrift.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
void (*f)(char*) i Peker til initieringsrutine
Usage:
LC_SetStartMessageHandler(StartMessageHandler);
Initieringsrutinen skal ha følgende definisjon:
void StartMessageHandler(char *pszFilnavn);
Med følgende Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
char *pszFilnavn i Ekstra meldingstekst (filnavn)
=============================================================================
SK_EntPnt_FYBA void LC_SetStartMessageHandler(void (*f)(const char*))
LC_SetShowMessageHandler
Set show message handler
=============================================================================
Purpose:
Registrer visningsrutine.
Visningsrutine blir kalt for å vise framdrift ved indeks-oppbygging.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
void (*f)(double) i Peker til visningsrutine
Usage:
LC_SetShowMessageHandler(ShowMessageHandler);
Visningsrutinen skal ha følgende definisjon:
void ShowMessageHandler(double prosent);
Med følgende Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
double prosent i Prosent ferdig (0.0 - 100.0)
=============================================================================
SK_EntPnt_FYBA void LC_SetShowMessageHandler(void (*f)(double))
LC_SetEndMessageHandler
Set end message handler
=============================================================================
Purpose:
Registrer avslutningsrutine.
Avslutningsrutinen blir kalt for å avslutte visning av framdrift ved indeksoppbygging.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
void (*f)(void) i Peker til avslutningsrutine
Usage:
LC_SetEndMessageHandler(EndMessageHandler);
Avslutningsrutinen skal ha følgende definisjon:
void EndMessageHandler(void);
=============================================================================
SK_EntPnt_FYBA void LC_SetEndMessageHandler(void (*f)(void))
LC_SetCancelHandler
Set cancel handler
=============================================================================
Purpose:
Registrer avbruddsstyring.
Rutine for avbruddsstyring blir kalt for å sjekke om bruker ønsker
å avbryte beregningen.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
short (*f)(void) i Peker til rutine for avbruddsstyring.
Usage:
LC_SetCancelHandler(CancelHandler);
Rutine for avbruddsstyring skal ha følgende definisjon:
short CancelHandler(void);
Med følgende Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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
Start message
=============================================================================
Purpose:
Starter vising av melding om baseoppbygging.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
char *pszFilnavn i Ekstra meldingstekst (filnavn)
Usage:
LC_StartMessage(pszFilnavn);
=============================================================================
void LC_StartMessage(const char *pszFilnavn)
LC_ShowMessage
Show message
=============================================================================
Purpose:
Vising av melding om baseoppbygging.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
double prosent i Prosent ferdig (0.0 - 100.0)
Usage:
LC_ShowMessage(prosent);
=============================================================================
void LC_ShowMessage(double prosent)
LC_EndMessage
End message
=============================================================================
Purpose:
Avslutt melding om baseoppbygging.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
Usage:
LC_EndMessage();
=============================================================================
void LC_EndMessage(void)
LC_Cancel
Check if Esc has been pushed
==========================================================================
Purpose:
Sjekk om det er trykkt på Esc (Avbryte indeksoppbygging).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
short sAvbrutt r UT_TRUE = Cancel
UT_FALSE = ikke avbrudd
Usage:
sAvbrutt = LC_Cancel();
==========================================================================
short LC_Cancel(void)
LC_Error
Error message function
=============================================================================
Purpose:
Standard feilmeldingsrutine.
Parameters:
Type Name I/O Explanation
-----------------------------------------------------------------------------
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.
Usage:
LC_Error(35,"(Kallt i LC_Xxxx)","");
=============================================================================
void LC_Error(short feil_nr,const char *logtx,const char *vartx)
22.8 Helper Functions for Message Handling
LC_StrError
Error message text
==========================================================================
Purpose:
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).
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
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.
Usage:
strategi = LC_StrError(ckap,feil_nr,&feilmeldingspeker);
==========================================================================
SK_EntPnt_FYBA short LC_StrError(short feil_nr,char **feilmelding)
22.9 Debugging
LC_DumpTab
Dump internal tables to stderr
==========================================================================
Purpose:
Dump internal tables to stderr
Parameters:
Type Name I/O Explanation
--------------------------------------------------------------------------
Usage:
LC_DumpTab();
=============================================================================
SK_EntPnt_FYBA void LC_DumpTab(void)