Comments (3)
Raster import could be implemented in way similar to vectors, using a shared volume from which the raster file could be published.
The handler now contains all the methods needed to import and publish the resource
Meanwhile the current importer-based flow could be wrapped inside a geonode-importer handler. This way we could get rid of the old implementation, both upload, and import.
Yes, thanks to the creation of the registry, we can set which kind of file the new importer can handle, so once the handler is ready is enough to register the new app here https://github.com/geosolutions-it/geonode-importer/blob/d92d796d485366ae6f693d08e728523ef5e09d4e/importer/handlers/apps.py#L14-L16
This approach needs careful analysis of the implications, although I don't see blockers.
Indeed, the main sensitive point is related to where to store these images. I suggest adding a settings/env_var to configure the path outside the normal upload folder. The storage manager may need an improvement to clone the files into a different directory from the standard one by adding a param here
from geonode-importer.
TODO:
- To be decided the usage of rasterio to handle the raster files. Maybe is better to continue with ogr2ogr with its drivers to avoid the usage of too many libraries
- Change the storage manager to le the destination folder of the clone being passed as param. This is needed for example if we want to store the images in the non-default upload path:
The changes must be done in the storage manager and the data-retriever - To be analyzed if
smart_open
can save the file in another destination (even in another container if needed) - create a "raster" handler. Probably it will contain less customization than the vector, it will be unique unless validation for each format is required
- basic validation is needed
- publish the resource in geoserver, probably this method is needed
- the creation of the geonode resource and the dynamic model
- handle the "copy" of the resource
- Test coverage with unittest and end2end testing
Integration:
Option 1
- Test with docker instances and relative volume share (this test may require different changes in the code to let it possible)
- Fix project docker-compose to let the volume be visible between the two instances (Geonode/Geoserver) (it may be needed the support of a DevOps)
Option 2:
Let the geoserver be able to access the default (or the one defined in the settings) upload folder. So no additional volumes are needed.
Estimation without docker: 13 (~ 1 week)
Estimation with docker: 18 (~ 1 and 1/2 week)
@giohappy can I proceed?
from geonode-importer.
Some points about your notes:
- at the moment I don't foresee the need for a conversion utility (which by the way would be gdal_translate for rasters, not
ogr2ogr
). Currently, we only support GeoTiff and I would keep this constraint for the time being - the handler should support the execution of pre-processing steps (e.g. for the optimization of the GeoTiff, tiling, adding overviews, etc.). It's not a strict requirement now, but it should be taken into account.
- do we really need dynamic models here? I don't see why...
- for sure we must support the Docker-based deployment. The Geoserver data dir volume is probably the best candidate for the shared folder.
from geonode-importer.
Related Issues (20)
- Upload GeoTiff Error You can't execute queries until the end of the 'atomic' block HOT 10
- Let geoserver fail if the SRID is not correctly set
- Implement XmlFilehandler HOT 6
- Implement SldFileHandler
- Shapefile handler does not accept `cpg` and `cst` files
- Layer is not updated when using API (Geonode 4.1 Stable branch)
- Geonode-importer test suite
- Upload shapefile with cst file fails
- PG_USE_COPY should be optional
- Pipe the dump of the ogr2ogr command when using PgPool
- Unable to install geonode on python 3.11 due to gdal forced version HOT 4
- Wondering why using get_geoserver_cascading_workspace HOT 2
- Migration error 0005_fixup_dynamic_shema_table_names
- Delete legacy upload code
- Cannot overwrite raster files HOT 3
- [GPKG] "must specify native_crs" HOT 2
- Raster execution request missing output_params HOT 3
- Include the id of the new resource inside the executionrequest outputs HOT 2
- CRS parsing is not correctly handled for CSV files HOT 1
- Create handler for the 3Dtiles
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from geonode-importer.