Robot code for accessioning and delivery of GIS resources.
These robots require several dependencies needed to perform the GIS workflow steps. These are often shelled out to using system
calls.
xsltproc
and xmllint
for transforming XML filesGIS data has its own set of names, standards and conventions that can be difficult for newcomers. To better understand some of these please see the Geo4LibCamp Glossary as well as the following article which describes the initial goals for supporting GIS in SDR:
Kim Durante & Darren Hardy (2015) Discovery, Management, and Preservation of Geospatial Data Using Hydra, Journal of Map & Geography Libraries, 11:2, 123-154, DOI: 10.1080/15420353.2015.1041630.
gis-robot-suite services two workflows: gisAssemblyWF and gisDeliveryWF.
gisAssemblyWF
extract-iso19139-metadata
:: Transform ISO 19139 metadata from ArcCatalog metadataextract-iso19110-metadata
:: Transform ISO 19110metadata from ArcCatalog metadataextract-fgdc-metadata
:: Transform FGDC metadata from ArcCatalog metadatagenerate-tag
:: Apply Geo tag to objectgenerate-descriptive
:: Convert ISO 19139 into Cocina descriptiveassign-placenames
:: Insert linked data into MODS record from gazetteerextract-boundingbox
:: Extract bounding box from data for Cocina descriptivegenerate-structural
:: Generate structural metadata and update the Cocina data store accordinglyfinish-gis-assembly-workflow
:: Finalize assembly workflow to prepare for assembly/delivery/discovery (validity check)start-delivery-workflow
:: Kickstart the GIS delivery workflow at gisDeliveryWFgisDeliveryWF
load-vector
:: Load vector data into PostGIS databaseload-raster
:: Load raster into GeoTIFF data storeload-geoserver
:: Load layers into GeoServerreset-geowebcache
:: Reset GeoWebCache for the layerfinish-gis-delivery-workflow
:: Connect to public and restricted GeoServers to verify layermetadata-cleanup
:: Remove the staging druid tree for the working druidstart-accession-workflow
:: Closes the object version to initiate the accessioning workflowThe file system structure will initially look like the following (see Consul page for a description) where the source input files for the shapefiles are all hard links to reduce space requirements: This is pre-stage when preparing the data for upload to globus.
zv925hd6723/
OGWELLS.dbf
OGWELLS.prj
OGWELLS.shp
OGWELLS.shp.xml
OGWELLS.shx
preview.jpg
index_map.json
Note that index_map.json
is optional.
Then at the end of GIS assembly processing -- see above prior to accessioning -- it will look like this in the workspace:
zv/
925/
hd/
6723/
zv925hd6723/
content/
preview.jpg
index_map.json
layer-iso19110.xml
layer-iso19139.xml
layer-fgdc.xml
layer.shp.xml
Note that content/index_map.json
is optional.
None 🙂
Settings.geohydra.stage
(e.g. '/var/geomdtk/current/stage'
)Settings.geohydra.workspace
(e.g. '/var/geomdtk/current/workspace'
)Settings.geohydra.tmpdir
(e.g. '/var/geomdtk/current/tmp'
)Settings.geohydra.geotiff.dir
(e.g. '/var/geoserver/local/raster/geotiff'
)Settings.geohydra.opengeometadata.dir
(e.g. '/var/geomdtk/current/export/opengeometadata/edu.stanford.purl'
)Done.