| Commit message (Collapse) | Author | Age | Files | 
| ... |  | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Cf. for instance
	$ ogrinfo ./LST.vbk_projekteringsomraden.shp -sql "SELECT * FROM \"LST.vbk_projekteringsomraden\" WHERE OMRID = '1452-V-008'"
        […]
	Layer name: LST.vbk_projekteringsomraden
	Geometry: Polygon
	Feature Count: 1
	Extent: (-907106.000000, 727.000000) - (914131.738200, 7573766.311200)
	Layer SRS WKT:
	PROJCRS["SWEREF99 TM",
        […]
	OGRFeature(LST.vbk_projekteringsomraden):2043
	  OMRID (String) = 1452-V-008
	  PROJNAMN (String) = Grimsås Äspås
	  ANTALVERK (Integer64) = 0
	  AntalejXY (Integer64) = (null)
	  CALPROD (Real) = 0.000000000000000
	  PBYGGSTART (String) = (null)
	  PDRIFT (String) = (null)
	  Andringsan (String) = (null)
	  UnderByggn (String) = (null)
	  ORGNAMN (String) = Kraftö AB
	  ORGNR (String) = 556708-7456
	  EJAKTUELL (String) = Yes
	  KOMNAMN (String) = Tranemo
	  LANSNAMN (String) = Västra Götalands l
	  EL_NAMN (String) = (null)
	  Raderat (String) = No
	  ArendeStat (String) = (null)
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Only the land-based ones for now.  Source:
https://www.energimyndigheten.se/energisystem-och-analys/elproduktion/vindkraft/vindbrukskollen/
  Layers:
    - https://ext-geodatakatalog.lansstyrelsen.se/GeodataKatalogen/srv/api/records/GetMetaDataById?id=ed5814b2-08bf-493a-a164-7819e1b590d6
      LST Vindbrukskollen landbaserade vindkraftverk
    - https://ext-geodatakatalog.lansstyrelsen.se/GeodataKatalogen/srv/api/records/GetMetaDataById?id=c816bd1e-bc6c-487f-a962-770f05f677b6
      LST Vindbrukskollen landbaserade projekteringsområden
    - https://ext-geodatakatalog.lansstyrelsen.se/GeodataKatalogen/srv/api/records/GetMetaDataById?id=c290bc31-1af8-497e-a9a5-87fcec55d0ce
      LST Vindbrukskollen havsbaserad vindkraft
  Webmaps:
    - https://vbk.lansstyrelsen.se/
    - https://ext-geodatakatalog.lansstyrelsen.se/GeodataKatalogen/srv/swe/catalog.search#/map
 | 
| | 
| 
| 
|  | 
The PostgreSQL driver doesn't support AlternativeName, for instance.
 | 
| | 
| 
| 
|  | 
This is the case for the PGDump driver, for instance.
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Unfortunately SCB doesn't provide CSV files, so we download their xls
file and produce our own CSV files.  We also add a conversion tool to
turn these CSV files into a (single, compact) JSON file to be served via
HTTP.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
OGRFieldDefn: add GetComment() / SetComment() methods were added in OGR
3.8.0, cf. https://github.com/OSGeo/gdal/blob/master/NEWS.md#core-3 .
Don't comment out TZ on field definitions.  Instead we check the
GDAL/OGR version and ignore TZ on field definitions if the OGR version
is too old.
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
OGRFieldDefn: add GetComment() / SetComment() methods were added in OGR
3.7.0, cf. https://github.com/OSGeo/gdal/blob/master/NEWS.md#core-5 .
Don't comment out comments on field definitions.  Instead we check the
GDAL/OGR version and ignore comments on field definitions if the OGR
version is too old.
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is useful to replace a YYYYMMDD formatted date with YYYY-MM-DD.
The target field can then be set to not-nullable and its type set to
Date, as the OGR_F_SetField*() with take care of the conversion.
We could also do that via an SQL query, but in our case the sources are
not proper RDBMS so SQL is emulated anyway.
 | 
| | 
| 
| 
| 
|  | 
There are a couple (15) of NULL AnmaldHa's, all from Sep 1, 2005 in
Borås, so we don't care about these.
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
And set them to NULL.
 | 
| | 
| 
| 
| 
|  | 
The previous default map was [-1] * n i.e., all source fields were
ignored.
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Path().joinpath('config.yml').exists() raises an exception when the
process doesn't have permission to traverse the current directory.  This
is the case, in particular, when running webmap-* as another user via
sudo while in the “normal” home directory.
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
On the desktop's terminal window (systemd 256) $SYSTEMD_EXEC_PID exists
and points at the login(1) process, so checking $JOURNAL_STREAM is
needed to decide whether the process runs from a .service file or not.
This is due to an incomplete logic in
42cfe748e23bad6fc51b14a3e5896a77fdb5c1d5
 | 
| | 
| 
| 
| 
| 
|  | 
Not sure why I thought there was duplicates but I must have done
something wrong as there are none in the 667034+223463+214082+
72656 = 1177234 features found after removing the spatial filter.
 | 
| | 
| 
| 
|  | 
This enables proper filtering by level etc. (incl. journald coloring).
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This is useful to bootstrap the database without having to run
	GRANT CREATE ON SCHEMA postgis TO webmap_import;
after DROPping the database or re-creating the cluster.
 | 
| | 
| 
| 
|  | 
(Commented out for now since Bookworm has only GDAL v3.6.)
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Tighten column width and replace fixed-width numerics with single
precisions floats.
Also, align column names with the documented ones.
 | 
| | 
| 
| 
| 
| 
|  | 
Despite using gdal.UseExceptions() a failed call doesn't raise an
exception, so we need to check the return value to avoid missing
features.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
|  | 
The extent is expressed in config['SRS'] in traditional GIS order
(easting/northing ordered: minX, minY, maxX, maxY), but the destination
layers might be pre-existing and use other SRS:es or mapping strategy.
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
|  | 
The configured extent is always expressed in the destination SRS, so it
needs to be transformed into the source SRS.  Like apps/ogr2ogr_lib.cpp,
we segmentize it to make sure it is sufficiently densified.
 | 
| | 
| 
| 
|  | 
(Commented out in config.yml for now since Bookworm has only v3.6.)
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
And getFieldSubTypeCode() to parseSubFieldType().
 | 
| | 
| 
| 
| 
| 
|  | 
We're TRUNCATE'ing the output layers (tables) at every run and aren't
reseting the sequences so they would soon overflow 32-bits FIDs
("sks:UtfordAvverk" has almost 300k features within the extent…).
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
There is still a few things to do (such as reprojection and geometry
changes) but it's mostly working.
We roll out our own ogr2ogr/GDALVectorTranslate()-like function version
because GDALVectorTranslate() insists in calling StartTransaction()
https://github.com/OSGeo/gdal/issues/3403 while we want a single
transaction for the entire desination layer, including truncation,
source imports, and metadata changes.
Surprisingly our version is not much slower than the C++ one.  Importing
the 157446 (of 667034) features from sksUtfordAvverk-2000-2015.shp takes
14.3s while
	ogr2ogr -f PostgreSQL \
	    -doo ACTIVE_SCHEMA=postgis \
	    --config PG_USE_COPY YES \
	    --config OGR_TRUNCATE YES \
	    -append \
	    -fieldmap "0,-1,-1,-1,-1,1,2,3,4,5,6,7,8,9,10,11,12,13" \
	    -nlt MULTIPOLYGON -nlt PROMOTE_TO_MULTI \
	    -gt unlimited \
	    -spat 110720 6927136 1159296 7975712 \
	    -nln "sks:UtfordAvverk" \
	    PG:"dbname='webmap' user='webmap_import'" \
	    /tmp/x/sksUtfordAvverk-2000-2015.shp \
	    sksUtfordAvverk-2000-2015
takes 14s.
Merely opening /tmp/x/sksUtfordAvverk-2000-2015.shp and looping through
its (extent-filtered) features results in a runtime of 4.3s.
 | 
| | 
| 
| 
| 
|  | 
We'll need that for layer creation (description, fields, creation
options, etc.).
 | 
| | 
| 
| 
|  | 
The configured extent is always relative to the configured SRS.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
|  | 
We always exit after a single WMS request if the layer has no SVG paths.
Don't print the request count in that case.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
Instead of sha1_hex().
 | 
| | 
| 
| 
| 
| 
| 
|  | 
passed only once.
This makes --debug less verbose by default and is useful for modules
that do lots of HTTP connections such as WMS probing.
 |