ags-upload

Insert AGS files to a database
git clone git://src.adamsgaard.dk/ags-upload # fast
git clone https://src.adamsgaard.dk/ags-upload.git # slow
Log | Files | Refs Back to index

commit d25fead8fb5625035f6205cc2a056e156fe99e46
parent b81873bfd2e96dfd41e851bc86c0203adb885e5f
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Wed,  8 Oct 2025 14:44:52 +0200

main.go: add remarks and depth, rename ground level

Diffstat:
Mcmd/main.go | 58++++++++++++++++++++++++++++++++--------------------------
1 file changed, 32 insertions(+), 26 deletions(-)

diff --git a/cmd/main.go b/cmd/main.go @@ -32,20 +32,22 @@ type CptInfo struct { TestReference string `gorm:"index:idx_loc_tesn,unique"` // SCPG_TESN // Selected LOCA fields for the site - CoordRef string // LOCA_LREF - Datum string // LOCA_DATM - GL *float64 // LOCA_GL (m) - LocX *float64 // LOCA_LOCX (m) - LocY *float64 // LOCA_LOCY (m) - LocZ *float64 // LOCA_LOCZ (m) + CoordRef string // LOCA_LREF + Datum string // LOCA_DATM + Remarks string // LOCA_REM + Depth *float64 // LOCA_FDEP (m) + GroundLevel *float64 // LOCA_GL (m) + LocX *float64 // LOCA_LOCX (m) + LocY *float64 // LOCA_LOCY (m) + LocZ *float64 // LOCA_LOCZ (m) } // Per-depth CPT data (SCPT) type Cpt struct { ID uint `gorm:"primaryKey"` - InfoId uint `gorm:"index"` // FK -> CptInfo.ID - LocationId string `gorm:"index"` // LOCA_ID (redundant but handy) - TestReference string `gorm:"index"` // SCPG_TESN (redundant but handy) + InfoId uint `gorm:"index"` // FK -> CptInfo.ID + LocationId string `gorm:"index"` // LOCA_ID (redundant but handy) + TestReference string `gorm:"index"` // SCPG_TESN (redundant but handy) Depth *float64 // SCPT_DPTH Qc *float64 // SCPT_RES (cone resistance) Fs *float64 // SCPT_FRES (side friction) @@ -79,8 +81,8 @@ func ParseAGSCptAll(r io.Reader) ([]CptInfo, []Cpt, error) { // LOCA rows keyed by LOCA_ID locas = map[string]struct { - LRef, Datum string - GL, X, Y, Z *float64 + LRef, Datum, Remarks string + Depth, GroundLevel, X, Y, Z *float64 }{} // CptInfo keyed by (LOCA_ID, SCPG_TESN) @@ -168,15 +170,17 @@ func ParseAGSCptAll(r io.Reader) ([]CptInfo, []Cpt, error) { break } locas[lid] = struct { - LRef, Datum string - GL, X, Y, Z *float64 + LRef, Datum, Remarks string + Depth, GroundLevel, X, Y, Z *float64 }{ - LRef: get("LOCA", row, "LOCA_LREF"), - Datum: get("LOCA", row, "LOCA_DATM"), - GL: fptr(get("LOCA", row, "LOCA_GL")), - X: fptr(get("LOCA", row, "LOCA_LOCX")), - Y: fptr(get("LOCA", row, "LOCA_LOCY")), - Z: fptr(get("LOCA", row, "LOCA_LOCZ")), + LRef: get("LOCA", row, "LOCA_LREF"), + Datum: get("LOCA", row, "LOCA_DATM"), + Remarks: get("LOCA", row, "LOCA_REM"), + Depth: fptr(get("LOCA", row, "LOCA_FDEP")), + GroundLevel: fptr(get("LOCA", row, "LOCA_GL")), + X: fptr(get("LOCA", row, "LOCA_LOCX")), + Y: fptr(get("LOCA", row, "LOCA_LOCY")), + Z: fptr(get("LOCA", row, "LOCA_LOCZ")), } case "SCPG": @@ -185,7 +189,7 @@ func ParseAGSCptAll(r io.Reader) ([]CptInfo, []Cpt, error) { if locID == "" || tesn == "" { break } - li := locas[locID] // if missing, zero-value ok + li := locas[locID] infosByKey[mapKey(locID, tesn)] = CptInfo{ ProjSourceId: proj.id, ProjName: proj.name, @@ -196,12 +200,14 @@ func ParseAGSCptAll(r io.Reader) ([]CptInfo, []Cpt, error) { LocationId: locID, TestReference: tesn, - CoordRef: li.LRef, - Datum: li.Datum, - GL: li.GL, - LocX: li.X, - LocY: li.Y, - LocZ: li.Z, + CoordRef: li.LRef, + Datum: li.Datum, + Remarks: li.Remarks, + Depth: li.Depth, + GroundLevel: li.GroundLevel, + LocX: li.X, + LocY: li.Y, + LocZ: li.Z, } case "SCPT":