Git Product home page Git Product logo

django-mapstore-adapter's Introduction

GeoNode OSGeo Project

Table of Contents

What is GeoNode?

GeoNode is a geospatial content management system, a platform for the management and publication of geospatial data. It brings together mature and stable open-source software projects under a consistent and easy-to-use interface allowing non-specialized users to share data and create interactive maps.

Data management tools built into GeoNode allow for integrated creation of data, metadata, and map visualization. Each dataset in the system can be shared publicly or restricted to allow access to only specific users. Social features like user profiles and commenting and rating systems allow for the development of communities around each platform to facilitate the use, management, and quality control of the data the GeoNode instance contains.

It is also designed to be a flexible platform that software developers can extend, modify or integrate against to meet requirements in their own applications.

Try out GeoNode

If you just want to try out GeoNode visit our official Demo online at: https://development.demo.geonode.org. After your registration, you will be able to test all basic functionalities like uploading layers, creation of maps, editing metadata, styles, and much more. To get an overview what GeoNode can do we recommend having a look at the Users Workshop.

Quick Docker Start

  python create-envfile.py

create-envfile.py accepts the following arguments:

  • --https: Enable SSL. It's disabled by default
  • --env_type:
    • When set to prod DEBUG is disabled and the creation of a valid SSL is requested to Letsencrypt's ACME server
    • When set to test DEBUG is disabled and a test SSL certificate is generated for local testing
    • When set to dev DEBUG is enabled and no SSL certificate is generated
  • --hostname: The URL that will serve GeoNode (localhost by default)
  • --email: The administrator's email. Notice that a real email and valid SMPT configurations are required if --env_type is set to prod. Letsencrypt uses email for issuing the SSL certificate
  • --geonodepwd: GeoNode's administrator password. A random value is set if left empty
  • --geoserverpwd: GeoNode's administrator password. A random value is set if left empty
  • --pgpwd: PostgreSQL's administrator password. A random value is set if left empty
  • --dbpwd: GeoNode DB user role's password. A random value is set if left empty
  • --geodbpwd: GeoNode data DB user role's password. A random value is set if left empty
  • --clientid: Client id of Geoserver's GeoNode Oauth2 client. A random value is set if left empty
  • --clientsecret: Client secret of Geoserver's GeoNode Oauth2 client. A random value is set if left empty
  docker compose build
  docker compose up -d

Learn GeoNode

After you´ve finished the setup process make yourself familiar with the general usage and settings of your GeoNodes instance. - the User Training is going in depth into what we can do. - the Administrators Workshop will guide you to the most important parts regarding management commands and configuration settings.

Development

GeoNode is a web-based GIS tool, and as such, in order to do development on GeoNode itself or to integrate it into your own application, you should be familiar with basic web development concepts as well as with general GIS concepts.

For development, GeoNode can be run in a 'development environment'. In contrast to a 'production environment' development differs as it uses lightweight components to speed up things.

To get started visit the Developer workshop for a basic overview.

If you're planning to customize your GeoNode instance or to extend its functionalities it's not advisable to change core files in any case. In this case, it's common to setup a GeoNode Project Template.

Contributing

GeoNode is an open source project and contributors are needed to keep this project moving forward. Learn more on how to contribute on our Community Bylaws.

Roadmap

GeoNode's development roadmap is documented in a series of GeoNode Improvement Projects (GNIPS). They are documented at GeoNode Wiki.

GNIPS are considered to be large undertakings that will add a large number of features to the project. As such they are the topic of community discussion and guidance. The community discusses these on the developer mailing list: http://lists.osgeo.org/pipermail/geonode-devel/

Showcase

A handful of other Open Source projects extend GeoNode’s functionality by tapping into the re-usability of Django applications. Visit our gallery to see how the community uses GeoNode: GeoNode Showcase.

The development community is very supportive of new projects and contributes ideas and guidance for newcomers.

Most useful links

General

Related projects

Support

Licensing

GeoNode is Copyright 2018 Open Source Geospatial Foundation (OSGeo).

GeoNode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GeoNode is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GeoNode. If not, see http://www.gnu.org/licenses.

django-mapstore-adapter's People

Contributors

afabiani avatar dependabot-preview[bot] avatar gannebamm avatar giohappy avatar gioscarda avatar mtnorthcott avatar

Watchers

 avatar  avatar

django-mapstore-adapter's Issues

geonode plugin center error: get_zoom() expects a GEOS Geometry with an SRID of 4326

The adapter could not correctly retrieve the zoom and center from the native bbox due to the following exception:

Traceback (most recent call last):
  File "/home/geosolutions/.virtualenvs/geonode/local/lib/python2.7/site-packages/mapstore2_adapter/plugins/geonode.py", line 441, in project_to_mercator
    zoom = GoogleZoom().get_zoom(poly) + 1
  File "/home/geosolutions/.virtualenvs/geonode/local/lib/python2.7/site-packages/mapstore2_adapter/utils.py", line 170, in get_zoom
    raise TypeError('get_zoom() expects a GEOS Geometry with an SRID of 4326.')
TypeError: get_zoom() expects a GEOS Geometry with an SRID of 4326.

Warning message on map loading

When a map opens the following warning message is exposed:
Selection_026
It should be investigate why this message appears.
It might be a geonode-mapstore-client issue.

After an investigation there are 3 solutions:

  • [ to test ] Set the layer bbox to 4326 server side currently is 3857 (In all view template when layer configuration is provided server side)
  • Fix in MapStore the comparison between bboxs see here
  • Remove the message in Mapstore

Map json data element does not contain map sublement when creating a map

We found that on django_mapstore_adapter\mapstore2_adapter\plugins\serializers.py when creating a map (executing perform_create) the map subelement of the data element is not stored correctly:

Line 313:
self.set_geonode_map(caller, serializer, map_obj, _data, _attributes) -> this makes a pop of subelement map of element _data so its not anymore on _data element

Line 317:
GeoNodeSerializer.update_data(serializer, _data) -> this saves the map data element without the map subelement as it is no longer present

On the other hand when updating the map (executing perform_update, same file) , as the two statements are executed on inverted order, this works, and saves the map subelement correctly

Do not create MapLayers for MapStore background layers

When MapLayer are created at map creation time we're creating them for any kind of layer that has been serialized by MapStore.
This means that MapLayers are also created for background layeers, although this shouldn't be needed since all the configuration required by MapStore is saved inside the MapStoreResource data field.

This also poses some problems to any logic that assumes that only local or remote service layers are stored as MapLayers (for example the thumbnail logic).

I propose to filter out background layers inside the mapstore geonode adapter when the layers structure is serialized.

Remove MapStoreResource.owner field to avoid split brain problems

The current MapStoreResource model defines the user field, which is a duplicate of ResourceBase.owner field.
This duplicated information can bring to misalignments, like the one fixed recently.

We should remove MapStoreResource.user and rely on the original ResourceBase.owner.
From the point of view of the MapStore API, if the "user" field is required it should be defined inside the MapStoreResourceSerializer and mapped to ResourceBase.owner.

Since the MapStoreResourceSerializer uses the geonode.base.api.permissions.IsOwnerOrReadOnly permission, we also need to expose a owner property inside MapStoreResource and, again, map it to the original ResourceBase.owner.

I would also remove the additional MapStoreResource.creation_date and MapStoreResource.last_update. Same os for the owner, if they're required we can directly map to the original ResourceBase fields.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.