# index.html.md
# Welcome to NextGIS knowledge base!
* [Get Started with your Web GIS](docs_ngcom/source/index.md)
* [NextGIS Toolbox](docs_toolbox/source/index.md)
* [NextGIS Data](docs_data/source/index.md)
* [NextGIS Web](docs_ngweb/source/index.md)
# Main products
* [NextGIS Web on-premise](docs_ngweb/source/ngw_op.md)
* [NextGIS QGIS](docs_ngqgis/source/index.md)
* [NextGIS Mobile](docs_ngmobile/source/index.md)
* [NextGIS GeoServices](docs_geoserv_prem/source/index.md)
# Supplementary products
* [NextGIS Collector (mobile application)](docs_collector/source/index.md)
* [NextGIS Tracker (mobile application)](docs_ngtracker/source/index.md)
* [NextGIS ID](docs_ngid/source/index.md)
* [NextGIS Connect for QGIS](docs_ngconnect/source/index.md)
* [NextGIS Web 3D](docs_ngweb_3D/source/index.md)
* [Plugins for QGIS](docs_ngqgis/source/plugins.md)
# Developer’s documentation
* [NextGIS Web](docs_ngweb_dev/doc/toc.md)
* [NextGIS Mobile](ngmobile_dev/source/toc.md)
* [NextGIS QMS Service API](qms_srv_dev/doc/api.md)
* [NextGIS Formbuilder](docs_formbuilder_dev/doc/toc.md)
* [NextGIS Tracker Hub](tracker_hub_dev/source/main.md)
* [NextGIS Web Docker](https://docs.nextgis.com/docs_ngweb/source/op_install.html)
* [Requirements for remote access](https://docs.nextgis.com/docs_ngweb/source/remote.html)
# Additional
* [Glossary](glossary.md)
* [Tutorials](docs_howto/source/index.md)
# PDFs
* [`NextGIS Web`](docs_ngweb/build/latex/NextGISWeb.pdf)
* [`NextGIS Mobile`](docs_ngmobile/build/latex/NextGISMobile.pdf)
# index.html.md
# NextGIS Collector
Watch on [youtube](https://youtu.be/SvO41DavWm0?si=vPrdJsYSmsnZEJY2).
* [Installation](install.md)
* [Hardware and software requirements](install.md#hardware-and-software-requirements)
* [Authorization](auth.md)
* [Via cloud server (my.nextgis.com)](auth.md#via-cloud-server-my-nextgis-com)
* [Via on-premise (NGIDOP)](auth.md#via-on-premise-ngidop)
* [Change user](auth.md#change-user)
* [Working with projects](operations.md)
* [Offline data collection](operations.md#offline-data-collection)
* [Basic operations](map_tools.md)
* [Add a point](map_tools.md#add-a-point)
* [Edit a point on the map](map_tools.md#edit-a-point-on-the-map)
* [Add a line](map_tools.md#add-a-line)
* [Editing lines](map_tools.md#editing-lines)
* [Add a polygon](map_tools.md#add-a-polygon)
* [Editing polygons](map_tools.md#editing-polygons)
* [Zoom and current location](map_tools.md#zoom-and-current-location)
* [Tracks](map_tools.md#tracks)
* [Synchronization](map_tools.md#synchronization)
* [Advanced tools](adv_tools.md)
* [How to share backup](adv_tools.md#how-to-share-backup)
* [Logging](adv_tools.md#logging)
* [Simulation of location data](adv_tools.md#simulation-of-location-data)
* [Changelog](changelog.md)
* [Index](../../genindex.md)
* [Glossary](../../glossary.md#glossary)
# index.html.md
# NextGIS Data
* [General issues](common.md)
* [How to order data](order.md)
* [How to switch accounts](logout.md)
* [How to open the entire map (project)](open_map.md)
* [How to order printable map](order_printmap.md)
* [How to open a particular layer](open_layer.md)
* [How to find the object I need on OpenStreetMap](osm_search.md)
* [How to get coordinates of a target object](coord.md)
* [How to get municipal boundaries for a target region](district.md)
* [How to select all of my city’s hospitals on the map](hospital.md)
* [How to prepare map for printing](print.md)
* [How to change the language of labels in OSM data](label_lang.md)
* [NextGIS Data extracts](extracts.md)
* [Our data in other software](other_soft.md)
* [How to upload data to NextGIS Web with NextGIS Connect](connect2ngw.md)
* [How to upload Tileset to NextGIS Web](tiles2ngw_en.md)
* [How to open elevation data in QGIS](elevation_qgis.md)
* [How to load elevation data into QGIS 3D window](3d_dem_qgis.md)
* [How to open satellite data in QGIS](satellite.md)
* [How to upload data to Google maps](google_mymaps.md)
* [How to import data into AutoCAD](autocad.md)
* [How to add a layer in AutoCAD Map 3D](map3d.md)
* [How to load data in R](r.md)
* [How to load data in GeoPandas](geopandas.md)
* [How to open data in Excel](excel.md)
* [How to upload text data into Microsoft Power BI](power_bi.md)
* [How to load vector layer into Microsoft Power BI](power_bi_map.md)
* [How to vizualize data with Highcharts Maps (highcharts.js)](highcharts.md)
* [How to use data in Leaflet (leaflet.js)](leaflet.md)
* [How to use data in D3 (d3.js)](d3.md)
* [How to load data into PostgreSQL/PostGIS](pg.md)
* [How to load multiple tables of different regions in PostgreSQL/PostGIS](upload_tables_postgis.md)
* [How to load layer into Tableau](tableau.md)
* [How to upload data to Blender GIS](blender.md)
* [How to load data into Qlik Sense](qlik.md)
* [How to open your project in MapInfo](mapinfo.md)
* [How to open raster data in MapInfo](mapinfo_raster.md)
* [How to open your basemap project in ArcGIS Pro](arcgispro.md)
* [How to open a map or a project in ArcGIS Pro](arcgis.md)
* [How to upload data to Locus GIS mobile app](locus.md)
* [Data conversion](transform.md)
* [How to process your data](process.md)
* [How to change coordinate reference system of the data](cs_change.md)
* [How to convert file to another GIS format](type_change.md)
* [How to change data encoding](encoding_change.md)
* [Solving technical problems](problems.md)
* [When area or distance differs from the expected value](calc_area.md)
# index.html.md
# NextGIS Formbuilder
#### NOTE
This software is no longer supported. To create data collection project, use [Web interface](https://docs.nextgis.com/docs_ngweb/source/collector.html#) instead.
You can [`download a PDF archive`](_static/NextGIS_Formbuilder_Fixed.pdf) of the old documentation.
# index.html.md
# NextGIS GeoServices on-premise
* [Introduction](intro.md)
* [System requirements](sys_req.md)
* [Minimum hardware requirements](sys_req.md#minimum-hardware-requirements)
* [Recommended OS](sys_req.md#recommended-os)
* [Authorization](auth.md)
* [Services](services.md)
* [Service groups](services.md#service-groups)
* [Add service](services.md#add-service)
* [Basemap](services.md#id1)
* [NextGIS Web](services.md#nextgis-web)
* [External TMS](services.md#external-tms)
* [Tileset](services.md#tileset)
* [Seeding](services.md#seeding)
* [Settings](settings.md)
* [Profile](settings.md#profile)
* [Users and user groups](settings.md#users-and-user-groups)
* [Basemap](settings.md#basemap)
* [Log](settings.md#log)
* [Storage](settings.md#storage)
* [About](settings.md#about)
* [Access permissions](permissions.md)
* [How different permission rules work together](permissions.md#how-different-permission-rules-work-together)
* [Installation (Administrator manual)](admin.md)
* [Introduction](admin.md#introduction)
* [Select endpoints](admin.md#select-endpoints)
* [Install and configure Docker](admin.md#install-and-configure-docker)
* [Install NextGIS GeoServices](admin.md#install-nextgis-geoservices)
* [Recommendations for reverse proxy setup](admin.md#recommendations-for-reverse-proxy-setup)
* [Operability check](admin.md#nggs-prem-admin-check)
* [Upgrade](upgrade.md)
* [Upgrade to 2.26.x from 2.25.x](upgrade.md#upgrade-to-2-26-x-from-2-25-x)
* [Upgrade to 2.25.x from 2.24.x](upgrade.md#upgrade-to-2-25-x-from-2-24-x)
* [Upgrade to 2.24.x from 2.23.x](upgrade.md#upgrade-to-2-24-x-from-2-23-x)
* [Upgrade to 2.23.x from 2.22.x](upgrade.md#upgrade-to-2-23-x-from-2-22-x)
* [Upgrade to 2.22.x from 2.21.x](upgrade.md#upgrade-to-2-22-x-from-2-21-x)
* [Upgrade to 2.21.x from 2.20.x](upgrade.md#upgrade-to-2-21-x-from-2-20-x)
* [Upgrade to 2.20.x from 2.19.x](upgrade.md#upgrade-to-2-20-x-from-2-19-x)
* [Upgrade to 2.19.x from 2.18.x](upgrade.md#upgrade-to-2-19-x-from-2-18-x)
* [Upgrade to 2.18.x from 2.17.x](upgrade.md#upgrade-to-2-18-x-from-2-17-x)
* [Upgrade to 2.17.x from 2.16.1](upgrade.md#upgrade-to-2-17-x-from-2-16-1)
* [For versions 2.16.1 and below](upgrade.md#for-versions-2-16-1-and-below)
* [Changelog](changelog.md)
# index.html.md
# NextGIS GeoServices
* [Introduction](intro.md)
* [Authorization](auth.md)
* [Basemap services](basemap_tiles.md)
* [Reissue of API key](reissue_api_key.md)
# index.html.md
# Tutorials
Download a starter data kit and follow detailed step-ty-step instructions to get to know NextGIS platform with first-hand experience.
1. [Store, manage and publish your spatial data](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html)
2. [Seamless QGIS Integration](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html)
[](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html)
1. [Collect Spatial Data in the Field](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html)
[](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html)
1. [Track Asset and Team Locations in Real Time](https://docs.nextgis.com/docs_howto/source/tutorial_track.html)
[](https://docs.nextgis.com/docs_howto/source/tutorial_track.html)
# index.html.md
# Get Started with NextGIS
* [Intro](intro.md)
* [Web GIS: Description and Main Features](description.md)
* [Account](create.md)
* [How to create account (NextGIS ID)](create.md#how-to-create-account-nextgis-id)
* [Sign-in via NextGIS ID](create.md#sign-in-via-nextgis-id)
* [Change or recover NextGIS ID password](create.md#change-or-recover-nextgis-id-password)
* [My account](create.md#my-account)
* [Where can I use NextGIS ID](create.md#ngcom-ngid-use)
* [Team](teams.md)
* [Team information](teams.md#team-information)
* [Manage your team](teams.md#manage-your-team)
* [Allow team members to access Web GIS](teams.md#allow-team-members-to-access-web-gis)
* [Team memberships](teams.md#team-memberships)
* [How to create Web GIS](create_webgis.md)
* [How to sign in to your Web GIS](create_webgis.md#how-to-sign-in-to-your-web-gis)
* [Main menu](create_webgis.md#main-menu)
* [Subscription](subscription.md)
* [Upgrade subscription plan](subscription.md#upgrade-subscription-plan)
* [Cancel subscription](subscription.md#cancel-subscription)
* [Which data formats and protocols are supported in Web GIS](data_types.md)
* [How data is managed](resources.md)
* [Demo projects](demoprojects.md)
* [What you can do with demo projects](demoprojects.md#what-you-can-do-with-demo-projects)
* [Tutorial: Store, manage and publish your spatial data](tutorial_webgis.md)
* [Step 1/6 Create free account and Web GIS](tutorial_webgis.md#step-1-6-create-free-account-and-web-gis)
* [Step 2/6 Access your Web GIS and create resource group](tutorial_webgis.md#step-2-6-access-your-web-gis-and-create-resource-group)
* [Step 3/6 Upload and publish vector layer](tutorial_webgis.md#step-3-6-upload-and-publish-vector-layer)
* [Step 4/6 Upload a style](tutorial_webgis.md#step-4-6-upload-a-style)
* [Step 5/6 Upload and publish raster layer](tutorial_webgis.md#step-5-6-upload-and-publish-raster-layer)
* [Step 6/6 Publish Web Map](tutorial_webgis.md#step-6-6-publish-web-map)
* [Add external WMS layer to Web Map](tutorial_webgis.md#wms)
* [Add basemaps to Web Map](tutorial_webgis.md#add-basemaps-to-web-map)
* [Create vector layer inside Web GIS](tutorial_webgis.md#empty-layer)
* [Edit vector layer on a Web Map, add file attachments](tutorial_webgis.md#edit-vector-layer-on-a-web-map-add-file-attachments)
* [Publish OGC API — Features service](tutorial_webgis.md#ogc-api)
* [What next](tutorial_webgis.md#next)
* [Tutorial: Seamless QGIS Integration](tutorial_qgis.md)
* [Step 1/5 Create free account and Web GIS](tutorial_qgis.md#step-1-5-create-free-account-and-web-gis)
* [Step 2/5 Open and explore QGIS project](tutorial_qgis.md#step-2-5-open-and-explore-qgis-project)
* [Step 3/5 Install NextGIS Connect plugin](tutorial_qgis.md#step-3-5-install-nextgis-connect-plugin)
* [Step 4/5 Create a connection](tutorial_qgis.md#step-4-5-create-a-connection)
* [Step 5/5 Publish QGIS project to NextGIS Web](tutorial_qgis.md#step-5-5-publish-qgis-project-to-nextgis-web)
* [Connect to Web Map from QGIS](tutorial_qgis.md#id2)
* [Modify layer styles on the Web Map from QGIS](tutorial_qgis.md#modify-layer-styles-on-the-web-map-from-qgis)
* [Update raster layer style on a Web Map](tutorial_qgis.md#raster-style)
* [Edit data from QGIS and explore results on the Web Map](tutorial_qgis.md#edit-data-from-qgis-and-explore-results-on-the-web-map)
* [How to upload data](data_upload.md)
* [Quick preview](data_upload.md#quick-preview)
* [Raster data](data_upload.md#raster-data)
* [Vector data](data_upload.md#vector-data)
* [How to connect data from external sources](data_connect.md)
* [Basemaps](data_connect.md#basemaps)
* [External PostGIS databases](data_connect.md#external-postgis-databases)
* [External WMS services](data_connect.md#external-wms-services)
* [External TMS services](data_connect.md#external-tms-services)
* [How to create map styles for data visualization](styles.md)
* [QGIS style](styles.md#qgis-style)
* [MapServer style](styles.md#mapserver-style)
* [Raster style](styles.md#raster-style)
* [How to create a Web Map](webmap_create.md)
* [Create Web Map](webmap_create.md#create-web-map)
* [Open Web Map](webmap_create.md#open-web-map)
* [Add a description](webmap_create.md#add-a-description)
* [How to embed a Web Map on your website](embed_webmap.md)
* [Embeded map settings](embed_webmap.md#embeded-map-settings)
* [How to share a link to a particular Web Map feature](embed_webmap.md#how-to-share-a-link-to-a-particular-web-map-feature)
* [How to publish data using standard protocols](data_services.md)
* [WMS service](data_services.md#wms-service)
* [WFS service](data_services.md#wfs-service)
* [How to connect a Lookup table to a vector layer](lookup.md)
* [How to use a lookup table for layer editing in NextGIS Web](lookup.md#how-to-use-a-lookup-table-for-layer-editing-in-nextgis-web)
* [How to use a lookup table in QGIS](lookup.md#how-to-use-a-lookup-table-in-qgis)
* [How to manage data with desktop app QGIS](ngqgis_connect.md)
* [How to enable the monitoring of moving objects (tracking)](tracking.md)
* [Introduction](tracking.md#introduction)
* [How tracking works](tracking.md#how-tracking-works)
* [Creating tracker groups](tracking.md#creating-tracker-groups)
* [Tracking in NextGIS Mobile, Collector and Tracker](tracking.md#tracking-in-nextgis-mobile-collector-and-tracker)
* [Tracking results on the Web Map](tracking.md#tracking-results-on-the-web-map)
* [Managing access rights](permissions.md)
* [Terms](permissions.md#terms)
* [Viewing user permissions](permissions.md#viewing-user-permissions)
* [Permissions tab in Settings](permissions.md#permissions-tab-in-settings)
* [Common cases of assigning permissions](permissions.md#common-cases-of-assigning-permissions)
* [How to begin data collection in your Web GIS](collector.md)
* [Introduction](collector.md#introduction)
* [Principles of work with NextGIS Collector](collector.md#principles-of-work-with-nextgis-collector)
* [Organizer of data collection: adding team participants in Web GIS](collector.md#organizer-of-data-collection-adding-team-participants-in-web-gis)
* [Organizer of data collection: creating data collection project](collector.md#organizer-of-data-collection-creating-data-collection-project)
* [Team participants: mobile app installation and start of data collection](collector.md#team-participants-mobile-app-installation-and-start-of-data-collection)
* [Administrator’s check-list](collector.md#administrator-s-check-list)
* [How to use Web GIS for creation of end-user apps](ngapi.md)
* [How to improve translation](translation.md)
* [Join the project](translation.md#join-the-project)
* [How to translate](translation.md#how-to-translate)
* [Toubleshooting](help.md)
* [Styles compatibility between QGIS and NextGIS Web](help.md#styles-compatibility-between-qgis-and-nextgis-web)
* [How to get help or send a bug report](help.md#how-to-get-help-or-send-a-bug-report)
* [Problem Solving (Q&A)](faq_webgis.md)
* [How to sign in to Web GIS](faq_webgis.md#how-to-sign-in-to-web-gis)
* [Access recovery and passwords](faq_webgis.md#access-recovery-and-passwords)
* [Personal data](faq_webgis.md#personal-data)
* [Two NextGIS accounts. Background](faq_webgis.md#two-nextgis-accounts-background)
* [How to…](howtos.md)
* [Index](../../genindex.md)
* [Glossary](../../glossary.md#glossary)
# index.html.md
# NextGIS Connect for QGIS
**General information**
* [Overview](https://docs.nextgis.com/docs_ngconnect/source/ngconnect.html)
* [Install and update](https://docs.nextgis.com/docs_ngconnect/source/ngc_install.html)
* [Create connection](https://docs.nextgis.com/docs_ngconnect/source/ngc_install.html#ng-connect-new-connection)
* [Settings](https://docs.nextgis.com/docs_ngconnect/source/ngc_settings.html)
**Upload data to the cloud**
* [Entire project](https://docs.nextgis.com/docs_ngconnect/source/ngc_data_transfer.html#qgis-project)
* [Vector layer](https://docs.nextgis.com/docs_ngconnect/source/ngc_data_transfer.html#vector-data)
* [Raster layer](https://docs.nextgis.com/docs_ngconnect/source/resources.html#raster-data)
* [Basemap](https://docs.nextgis.com/docs_ngconnect/source/ngc_data_transfer.html#basemaps)
* [Replace data](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-data-overwrite)
* [Update style](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-style-overwrite)
**Use data from the cloud**
* [Add data from the cloud](https://docs.nextgis.com/docs_ngconnect/source/resources.html#connect-data-export)
* [Export to file](https://docs.nextgis.com/docs_ngconnect/source/export.html)
* [Edit data](https://docs.nextgis.com/docs_ngconnect/source/edit.html)
* [Work with Lookup tables](https://docs.nextgis.com/docs_ngconnect/source/resources.html#ng-connect-lookup)
**Manage resources**
* [Search and filter](https://docs.nextgis.com/docs_ngconnect/source/filter.html)
* [Create: folder, Web Map, layer, service](https://docs.nextgis.com/docs_ngconnect/source/manage.html#wfs-wms-ogc-api-features)
* [Delete](https://docs.nextgis.com/docs_ngconnect/source/manage.html#connect-resource-delete)
* [Copy](https://docs.nextgis.com/docs_ngconnect/source/manage.html#connect-resource-double)
**Useful information**
* [Troubleshooting](https://docs.nextgis.com/docs_ngconnect/source/troubleshooting.html)
* [Glossary](../../glossary.md#glossary)
* [Introduction](intro.md)
* [General Information](general.md)
* [Key features of NextGIS Web](general.md#key-features-of-nextgis-web)
* [Minimum hardware](general.md#minimum-hardware)
* [Recommended software versions](general.md#recommended-software-versions)
* [Main interface](admin_interface.md)
* [Authorization](admin_interface.md#authorization)
* [Home page](admin_interface.md#home-page)
* [Language change](admin_interface.md#language-change)
* [Resource search](admin_interface.md#resource-search)
* [Control panel](admin_interface.md#control-panel)
* [Resource view](admin_interface.md#resource-view)
* [Feature table](admin_interface.md#feature-table)
* [Data export](admin_interface.md#data-export)
* [Interface for guests](admin_interface.md#interface-for-guests)
* [Adding resources](create_resource.md)
* [Create Resource group to manage data](create_resource.md#create-resource-group-to-manage-data)
* [Data preview](create_resource.md#data-preview)
* [Typical structure](create_resource.md#typical-structure)
* [Gallery](gallery.md)
* [Gallery items](gallery.md#gallery-items)
* [Gallery settings](gallery.md#gallery-settings)
* [Add layers](layers.md)
* [Vector layer](layers.md#ngw-create-vector-layer)
* [Raster layer](layers.md#ngw-create-raster-layer)
* [Tileset](layers.md#ngw-tile-set)
* [Raster layer storage](layers.md#raster-storage)
* [Services](services.md)
* [MVT vector tiles](services.md#mvt-vector-tiles)
* [TMS service](services.md#tms-service)
* [OGC API – Features service](services.md#ogc-api-features-service)
* [WFS service](services.md#wfs-service)
* [WMS service](services.md#wms-service)
* [Update resource](edit_resource.md)
* [Move resource](edit_resource.md#move-resource)
* [Delete resource](edit_resource.md#delete-resource)
* [Edit description and metadata](edit_resource.md#edit-description-and-metadata)
* [Keyname for API integrations](edit_resource.md#keyname-for-api-integrations)
* [Managing Feature table](feature_table.md)
* [Feature table on a separate page](feature_table.md#feature-table-on-a-separate-page)
* [Feature table on a Web Map](feature_table.md#feature-table-on-a-web-map)
* [Search and filter](feature_table.md#search-and-filter)
* [Filter layer features on the Web Map by area](feature_table.md#filter-layer-features-on-the-web-map-by-area)
* [View feature entry](feature_table.md#view-feature-entry)
* [Create new feature](feature_table.md#create-new-feature)
* [Edit features](feature_table.md#edit-features)
* [Delete feature](feature_table.md#delete-feature)
* [Export to file](feature_table.md#export-to-file)
* [Displaying selected fields and feature edit information](feature_table.md#displaying-selected-fields-and-feature-edit-information)
* [Other tools](feature_table.md#other-tools)
* [Edit vector features](feature_edit.md)
* [Edit mode on a Web Map](feature_edit.md#edit-mode-on-a-web-map)
* [Create a new feature (point, line, polygon)](feature_edit.md#create-a-new-feature-point-line-polygon)
* [Delete feature](feature_edit.md#delete-feature)
* [Move feature](feature_edit.md#move-feature)
* [Edit vertices](feature_edit.md#edit-vertices)
* [Add and delete vertices](feature_edit.md#add-and-delete-vertices)
* [Create holes](feature_edit.md#create-holes)
* [Edit feature’s attributes](feature_edit.md#edit-feature-s-attributes)
* [Attachments](feature_edit.md#attachments)
* [Disable editing on the map](feature_edit.md#disable-editing-on-the-map)
* [Styles](mapstyles.md)
* [Formats](mapstyles.md#formats)
* [QGIS Vector Style](mapstyles.md#qgis-vector-style)
* [Editing QGIS style](mapstyles.md#editing-qgis-style)
* [MapServer style](mapstyles.md#mapserver-style)
* [Raster style](mapstyles.md#raster-style)
* [Tile cache](mapstyles.md#tile-cache)
* [Adding a style on the map](mapstyles.md#adding-a-style-on-the-map)
* [Creating other types of resources](create_other.md)
* [Lookup table](create_other.md#lookup-table)
* [File bucket](create_other.md#file-bucket)
* [Versioning](version.md)
* [Versioning in the NextGIS Web interface](version.md#versioning-in-the-nextgis-web-interface)
* [Versioning in NextGIS Web API](version.md#versioning-in-nextgis-web-api)
* [Versioning in QGIS](version.md#versioning-in-qgis)
* [Vector layer settings](layers_settings.md)
* [Edit vector layer attributes table](layers_settings.md#edit-vector-layer-attributes-table)
* [Delete or replace all features](layers_settings.md#delete-or-replace-all-features)
* [Change layer geometry](layers_settings.md#change-layer-geometry)
* [Advanced options for uploading vector layer from a file](vect_layer_upload_params.md)
* [Processing possible errors](vect_layer_upload_params.md#processing-possible-errors)
* [Detecting geometry type](vect_layer_upload_params.md#detecting-geometry-type)
* [Object ID detection settings (FID)](vect_layer_upload_params.md#object-id-detection-settings-fid)
* [PostGIS](postgis_details.md)
* [Creating PostGIS connection](postgis_details.md#creating-postgis-connection)
* [Creating PostGIS layer](postgis_details.md#creating-postgis-layer)
* [Multiple geometries in a singe table](postgis_details.md#multiple-geometries-in-a-singe-table)
* [PostGIS diagnostics](postgis_details.md#postgis-diagnostics)
* [PostGIS layer troubleshooting](postgis_details.md#postgis-layer-troubleshooting)
* [Create layers with conditions](postgis_details.md#create-layers-with-conditions)
* [WFS, WMS, TMS layers](connections.md)
* [WFS](connections.md#ngw-wfs-in)
* [WMS](connections.md#ngw-wms-in)
* [TMS](connections.md#ngw-tms-in)
* [Adding Web Maps](webmaps_admin.md)
* [Creating a Web Map](webmaps_admin.md#creating-a-web-map)
* [Web Map Layers](webmaps_admin.md#web-map-layers)
* [Basemaps](webmaps_admin.md#basemaps)
* [Settings](webmaps_admin.md#settings)
* [Legend](webmaps_admin.md#legend)
* [Extent](webmaps_admin.md#ngw-map-extent)
* [Bookmarks](webmaps_admin.md#bookmarks)
* [Hide or show panels and identification sections](webmaps_admin.md#hide-or-show-panels-and-identification-sections)
* [Social](webmaps_admin.md#social)
* [Final steps](webmaps_admin.md#final-steps)
* [Open Web Map settings](webmaps_admin.md#open-web-map-settings)
* [How to optimize Web Map performance](webmaps_admin.md#how-to-optimize-web-map-performance)
* [Web Map Cloning](webmap_clone.md)
* [Clone to another group](webmap_clone.md#clone-to-another-group)
* [Clone to a new group](webmap_clone.md#clone-to-a-new-group)
* [Web Map viewer](webmaps_client.md)
* [Zoom and rotation](webmaps_client.md#zoom-and-rotation)
* [Panels](webmaps_client.md#ngw-webmaps-client-panels)
* [Map tools](webmaps_client.md#ngw-webmaps-client-tools)
* [Share](webmaps_client.md#ngw-webmaps-client-share)
* [Link to a Web Map feature](webmaps_client.md#link-to-a-web-map-feature)
* [Legend in the layers tree](webmaps_client.md#legend-in-the-layers-tree)
* [Layer menu](webmaps_client.md#layer-menu)
* [Filter](webmaps_client.md#filter)
* [Feature identification](webmaps_client.md#ngw-webmaps-client-ident)
* [Search](webmaps_client.md#ngw-webmaps-client-search)
* [Basemap](webmaps_client.md#basemap)
* [Contact Web GIS owner](webmaps_client.md#contact-web-gis-owner)
* [Print a Web Map or save as image](print.md)
* [Embed Web Map on a Web page](embed_webmap.md)
* [Embeded map settings](embed_webmap.md#embeded-map-settings)
* [Web Map Settings](webmap_set.md)
* [Navigation menu vizibility](webmap_set.md#navigation-menu-vizibility)
* [Identify panel](webmap_set.md#ngw-contr-panel-webmap-ident)
* [Measurements](webmap_set.md#measurements)
* [Address search](webmap_set.md#address-search)
* [Favorites](favorites.md)
* [How to add Web Map fragment to Favorites](favorites.md#how-to-add-web-map-fragment-to-favorites)
* [Favorites list editing](favorites.md#favorites-list-editing)
* [Web Map annotations](annotation.md)
* [Annotation. What is it?](annotation.md#annotation-what-is-it)
* [How to enable Web Map annotations?](annotation.md#how-to-enable-web-map-annotations)
* [Web Map: Annotations panel](annotation.md#web-map-annotations-panel)
* [Web Map: annotation editting](annotation.md#web-map-annotation-editting)
* [Web Map: user’s permissions associated with annotations](annotation.md#web-map-user-s-permissions-associated-with-annotations)
* [Managing users](users.md)
* [Create new user group](users.md#create-new-user-group)
* [Global permissions](users.md#global-permissions)
* [How to find user identification number](users.md#how-to-find-user-identification-number)
* [Disable or delete users](users.md#disable-or-delete-users)
* [How to bind NextGIS ID to an existing Web GIS user](users.md#how-to-bind-nextgis-id-to-an-existing-web-gis-user)
* [Create new local user](users.md#create-new-local-user)
* [Update local user password](users.md#update-local-user-password)
* [Permission system in NextGIS Web](permissions.md)
* [Permissions and its types (scopes)](permissions.md#permissions-and-its-types-scopes)
* [Access control list and the rules](permissions.md#access-control-list-and-the-rules)
* [Permissions dependencies](permissions.md#permissions-dependencies)
* [Computing Effective Permissions](permissions.md#computing-effective-permissions)
* [Assigning permissions to users before their first sign in](permissions.md#assigning-permissions-to-users-before-their-first-sign-in)
* [Spacial Reference Systems](ngw_srs.md)
* [Custom Spacial Reference Systems](ngw_srs.md#custom-spacial-reference-systems)
* [How to edit or delete SRS](ngw_srs.md#how-to-edit-or-delete-srs)
* [Usage of additional SRS](ngw_srs.md#usage-of-additional-srs)
* [Custom SRS support for external PostGIS Databases](ngw_srs.md#custom-srs-support-for-external-postgis-databases)
* [Collector projects](collector.md)
* [List of collectors](collector.md#list-of-collectors)
* [Data collection project](collector.md#ngw-collector-create-project)
* [Form for data collection](collector.md#form-for-data-collection)
* [Form elements](form_elements.md)
* [Label](form_elements.md#id2)
* [Spacer](form_elements.md#id4)
* [Tabs](form_elements.md#id6)
* [Text edit](form_elements.md#text-edit)
* [Checkbox](form_elements.md#checkbox)
* [Date and time](form_elements.md#datetime)
* [Coordinates](form_elements.md#id10)
* [Distance meter](form_elements.md#distance)
* [Average calculator](form_elements.md#average)
* [Photo](form_elements.md#id14)
* [System field](form_elements.md#sytem)
* [Dropdown](form_elements.md#id17)
* [Dual dropdown](form_elements.md#id19)
* [Radio group](form_elements.md#radio)
* [Dependent dropdowns](form_elements.md#dependet-dropdown)
* [Import options](form_elements.md#import-options)
* [Import options from CSV](form_elements.md#import-options-from-csv)
* [Data collection on premise](data_collection_on_premise.md)
* [Introduction](data_collection_on_premise.md#introduction)
* [Administrator’s check-list](data_collection_on_premise.md#administrator-s-check-list)
* [Trackers settings](trackers.md)
* [Viewing tracks on a Web Map](trackers.md#viewing-tracks-on-a-web-map)
* [Reports](trackers.md#reports)
* [Export to GPX](trackers.md#export-to-gpx)
* [Cross-origin resource sharing (CORS)](cors.md)
* [Web GIS information](infowebgis.md)
* [System information](infowebgis.md#system-information)
* [Plan and features](infowebgis.md#plan-and-features)
* [Storage](infowebgis.md#storage)
* [Available updates](infowebgis.md#available-updates)
* [Backup policy](infowebgis.md#backup-policy)
* [Backups](infowebgis.md#backups)
* [User activity log](infowebgis.md#user-activity-log)
* [Metrics and analytics](analytics.md)
* [Design customization](look.md)
* [Web GIS name](look.md#web-gis-name)
* [Font management](look.md#font-management)
* [Upload a logo](look.md#upload-a-logo)
* [Customize the design with CSS](look.md#customize-the-design-with-css)
* [Custom CSS examples](look.md#custom-css-examples)
* [Hide resource export](look.md#hide-resource-export)
* [How to change the homepage address](look.md#how-to-change-the-homepage-address)
* [How to change Web GIS domain](domain.md)
* [Customize UI Elements (White label)](label.md)
* [Company logo on Web Map](label.md#company-logo-on-web-map)
* [Company URL](label.md#company-url)
* [Help page](label.md#help-page)
* [Support URL](label.md#support-url)
* [Other items](label.md#other-items)
* [Glossary](../../glossary.md#glossary)
# index.html.md
# NextGIS Web 3D
* [Introduction](intro.md)
* [Uploading 3D Models](3D_models.md)
* [Uploading and storing 3D datasets](3D_tilesets.md)
* [Uploading elevation data](DEM.md)
* [3D data Styles](3D_style.md)
* [General](3D_style.md#general)
* [3D Style](3D_style.md#d-style)
* [POI](3D_style.md#poi)
* [3D Model](3D_style.md#d-model)
* [Creation of 3D scenes](3D_scenes.md)
* [Rendering 3D scenes](3D_scene_visualization.md)
# index.html.md
# NextGIS Web REST API
* [Authorization](auth.md)
* [Managing users](auth.md#managing-users)
* [Managing groups](auth.md#managing-groups)
* [Automatically creating users](auth.md#automatically-creating-users)
* [Get resource permissions](auth.md#get-resource-permissions)
* [Simple output](auth.md#simple-output)
* [Detailed output](auth.md#detailed-output)
* [Resources](resource.md)
* [Resource classes](resource.md#resource-classes)
* [HTTP API](resource.md#http-api)
* [Create resource](create.md)
* [Resource group](create.md#resource-group)
* [PostGIS Connection](create.md#postgis-connection)
* [PostGIS Layer](create.md#postgis-layer)
* [Empty vector layer](create.md#empty-vector-layer)
* [Vector layer with data](create.md#vector-layer-with-data)
* [Feature in vector or PostGIS layer](create.md#feature-in-vector-or-postgis-layer)
* [Add attachment to feature](create.md#add-attachment-to-feature)
* [Batch create features in vector layer](create.md#batch-create-features-in-vector-layer)
* [Raster layer](create.md#raster-layer)
* [File bucket](create.md#file-bucket)
* [Mapserver style](create.md#mapserver-style)
* [QGIS style](create.md#qgis-style)
* [Raster style](create.md#raster-style)
* [Lookup table](create.md#lookup-table)
* [Web map](create.md#web-map)
* [WMS Service](create.md#wms-service)
* [WMS Connection](create.md#wms-connection)
* [WMS Layer](create.md#wms-layer)
* [Tracker](create.md#tracker)
* [File upload](file_upload.md)
* [Single file upload](file_upload.md#single-file-upload)
* [Multiple file upload](file_upload.md#multiple-file-upload)
* [Editing](change.md)
* [Change resource](change.md#change-resource)
* [Change webmap](change.md#change-webmap)
* [Change metadata](change.md#change-metadata)
* [Change file bucket resource](change.md#change-file-bucket-resource)
* [Change lookup table resource](change.md#change-lookup-table-resource)
* [Change feature](change.md#change-feature)
* [Change attachment](change.md#change-attachment)
* [Delete feature](change.md#delete-feature)
* [Delete features](change.md#delete-features)
* [Delete all features](change.md#delete-all-features)
* [Delete attachment](change.md#delete-attachment)
* [Delete all attachments](change.md#delete-all-attachments)
* [Miscellaneous](misc.md)
* [Get resource data](misc.md#get-resource-data)
* [Identify by polygon](misc.md#identify-by-polygon)
* [Error reporting](error_report.md)
* [Vector layer data types](vector_data_types.md)
* [Python API library](python_api.md)
* [ogr2ogr](ogr2ogr.md)
# Indices and tables
* [Index](../../../genindex.md)
* [Module Index](../../../py-modindex.md)
* [Search OpenStreetMap features](../../../docs_ngqgis/source/osminfo.md#search)
# index.html.md
# NextGIS Web internals
* [Components and environment](component.md)
* [Dependencies between components](component.md#dependencies-between-components)
* [Global env object](component.md#global-env-object)
* [Component class](component.md#component-class)
* [Env class](component.md#env-class)
* [Modern JavaScript](jsrealm.md)
* [Setup and directory layout](jsrealm.md#setup-and-directory-layout)
* [Working with packages](jsrealm.md#working-with-packages)
* [Webpack modules](jsrealm.md#webpack-modules)
* [Writing modules](jsrealm.md#writing-modules)
* [Long-running API requests](lunkwill.md)
* [Internationalization and localization](i18n.md)
* [Server side](i18n.md#server-side)
* [Client side](i18n.md#client-side)
* [Testing framework](test.md)
* [File layout](test.md#file-layout)
* [Unit tests](test.md#unit-tests)
* [Functional tests](test.md#functional-tests)
* [Writing tests](test.md#writing-tests)
* [Running tests](test.md#running-tests)
* [Package versioning](versioning.md)
* [Package configuration](versioning.md#package-configuration)
* [Development versions](versioning.md#development-versions)
* [Release versions](versioning.md#release-versions)
* [Backports and patches](versioning.md#backports-and-patches)
* [Database migrations](migration.md)
* [Existing components](migration.md#existing-components)
* [New components](migration.md#new-components)
* [Python migrations](migration.md#python-migrations)
* [URLs and routes](url_route.md)
* [URLs](url_route.md#urls)
* [Route names](url_route.md#route-names)
* [Describing API](apitype.md)
* [Path parameters](apitype.md#path-parameters)
* [Query parameters](apitype.md#query-parameters)
* [Request body](apitype.md#request-body)
* [Response](apitype.md#response)
* [Code formatting](code_formatting.md)
# Indices and tables
* [Index](../../../genindex.md)
* [Module Index](../../../py-modindex.md)
* [Search OpenStreetMap features](../../../docs_ngqgis/source/osminfo.md#search)
# index.html.md
# NextGIS Toolbox
* [Introduction](intro.md)
* [Purpose](intro.md#purpose)
* [Installation and running](intro.md#installation-and-running)
* [Authorization](intro.md#authorization)
* [Use via MCP](mcp.md)
* [ChatGPT (web)](mcp.md#chatgpt-web)
* [Claude (web)](mcp.md#claude-web)
* [Claude Code](mcp.md#claude-code)
* [Cursor IDE](mcp.md#cursor-ide)
* [Tools](tools.md)
* [Add region and settlement names to attributes](add_regions.md)
* [Adobe Illustrator (\*.ai) to geodata](ai2geo.md)
* [Aggregate raster layer to H3 grid](aggregate_raster_layer_to_h3.md)
* [Aggregate vector layer to H3 grid](aggregate_vector_layer_to_h3.md)
* [Layer list from DWG file](autocad_file_schema.md)
* [Report DWG / DXF file version](autocad_version.md)
* [ASCII raster to GeoTIFF](ascii2geotiff.md)
* [Buffer](buffer.md)
* [Central lines of polygons](centerline.md)
* [Points inside polygons](centroid2attr.md)
* [Check geometries](check_geometries.md)
* [Calculate areas of intersection](clip_polys_poly.md)
* [Convert format of vector layer](convert.md)
* [Reproject coordinates](coord_recalc.md)
* [Coordinates to polygon](coords2poly.md)
* [Count TMS tiles for polygon](count_tiles.md)
* [Count number of layer intersections](crossing_borders.md)
* [Extract elevations from DEM](deminpoints.md)
* [DOC(X) to PDF](doc2pdf.md)
* [Prepare and download Sentinel-2 data](download_and_prepare_l8_s2.md)
* [Download Landsat Analysis Ready Data (GLAD ARD)](download_glad.md)
* [Embed SVG into QGS/QML](embedsvg.md)
* [Empty geometries in Web GIS layer](empty_geoms.md)
* [Erase overlapping areas from layer](eraser.md)
* [Erosion Susceptibility Analysis](erosion_analysis.md)
* [Photos with EXIF to NGW layer](exif2resource.md)
* [Change attributes in layer group](field_value_changer.md)
* [Fix geometries](fix_geometries.md)
* [Strip ZM from vector layer](flatten.md)
* [Flood Susceptibility Analysis](flood_analysis.md)
* [GBIF species observations to geodata](gbif_download.md)
* [Advanced vector generalization](generalization.md)
* [Geocode table](geocodetable.md)
* [Geodata to PMTiles](geodata2pmtiles.md)
* [Change geometries in layer groups](geometry_changer.md)
* [GeoPackage to MapInfo Enhanced TAB](gpkg2etab.md)
* [GPS track animation for social media](gpxanimation.md)
* [Geotag photos using GPX track](gpx2exif.md)
* [Clip GPX file by bounding box](gpxclipbbox.md)
* [Split GPX file by days](gpxdailysplit.md)
* [Merge GPX files](gpxmerge.md)
* [Split GPX into individual tracks](gpxtracksplit.md)
* [Meter grid](grid.md)
* [Hello, World!](hello.md)
* [iNaturalist species observations to geodata](inaturalist_download.md)
* [Image classification](image_classification.md)
* [Image clustering](image_clustering.md)
* [Copernicus Sentinel image search](imagesearch.md)
* [DWG to DXF](import_dwg.md)
* [DWG to DXF (libdxfrw)](import_dwg_libdxfrw.md)
* [Improve DEM](improvedem.md)
* [Intersection registry](intersect_layers.md)
* [Join layer and table by field](join_by_field.md)
* [KML to geodata](kml2geodata.md)
* [Projection (Dae, Collada) to Shapefile](kmldae2footprints.md)
* [Search and save Landsat-L2C2 scene previews](landsat_search.md)
* [Landsat radiometric calibration](landsat_to_radiance.md)
* [Landsat reflectance calculation](landsat_to_reflectance.md)
* [Landslide Susceptibility Analysis](landslide_analysis.md)
* [Vector layers in Web GIS from archive](layers2ngw.md)
* [Form multi-channel raster from individual channels](layerstack.md)
* [Lines to polygons](lines2poly.md)
* [Temporal polygons from lines and points](lines2polygons.md)
* [MapInfo ready for QGIS](mapinfo2qgis.md)
* [Vertical map for Social Media](mappy.md)
* [Max distance between polygon nodes](maxdist.md)
* [MBTiles to NGRC](mbtiles2ngrc.md)
* [Marine traffic report](mt2report.md)
* [Normalized difference index](ndi.md)
* [Attribute to description for Web GIS](ngw_attribute2description.md)
* [Contribution activity report for resource](ngw_contribution_activity.md)
* [Copy nextgis.com resource group with data](ngw_copy_group.md)
* [Duplicate Web GIS layer](ngw_copy_layer.md)
* [Feature history](ngw_feature_history.md)
* [Resource group to Web Map](ngw_group2webmap.md)
* [Intersection registry for Web GIS](ngw_intersect.md)
* [Get the layer historical state](ngw_layer_historical_state.md)
* [Manage Web GIS layer structure](ngw_layer_schema.md)
* [Merge two Web GIS vector layers](ngw_merge_layers.md)
* [Vector layers from Web GIS to GeoPackage](ngw_to_gpkg.md)
* [Web Map to image](ngw_webmap2image.md)
* [Combine two Web Maps into a new one](ngw_webmap_combiner.md)
* [Geocode with Nominatim](nominatim_geocode.md)
* [Merge vector layers](ogrmerge.md)
* [Download OpenStreetMap](osm_download.md)
* [Clip PBF file by bbox](osmclip_bbox.md)
* [Convert Garden Gnome Package panoramas to JPEG](pano2vr.md)
* [Add Google Photosphere XMP metadata to photos](panotag.md)
* [Import PastVu photos to Web GIS](pastvu2webgis.md)
* [Search & download Planetary Computer](planetary_search.md)
* [Point cloud to tileset](pointcloud2tileset.md)
* [Statistics of points and tracks in polygons from NGW](points_on_tracks_stats.md)
* [Polygons topological simplifier](polysimplifier.md)
* [Parse addresses](postal.md)
* [Predict satellite overpass](predict_overpass.md)
* [Prepare raster](prepare_raster.md)
* [Check geometries (QGIS)](qgis_check_geometries.md)
* [Fix geometries (QGIS)](qgis_fix_geometries.md)
* [Multipart to singleparts](qgis_multiparttosingleparts.md)
* [QGIS project to PDF](qgis2pdf.md)
* [Set of squares with transects](quadro.md)
* [Raster calculator (GRASS)](r_mapcalc.md)
* [Raster calculator (GDAL)](raster_calculator.md)
* [Raster to NGRC](raster2tiles.md)
* [Erase features](removecontents.md)
* [Sentinel-2 scenes to GPKG](s2_search.md)
* [Sunlight hours prediction](solar_hours.md)
* [Spatial Join (Join by location)](spatial_join.md)
* [Compute spectral index](spectral_indices.md)
* [Split into equal parts](split_to_equal.md)
* [Split into rectangles and calculate their number](split_to_rect.md)
* [Split at 180th meridian](split180.md)
* [Split Complex Polygons](splitcomplex.md)
* [Google Sheets to Web GIS](spreadsheet2layer.md)
* [Table to vector file](table2geo.md)
* [Create temporal cache](temporal_split.md)
* [Comprehensive Terrain Analysis](terrain_analysis.md)
* [TROPOMI to GeoTIFF](tropomi2geotiff.md)
* [Update Web GIS layer from CSV](update_vector_layer.md)
* [Prepare vector layer for DataLens](vector2datalens.md)
* [Layer intersection](vectorclip.md)
* [Web GIS structure to spreadsheet](web_gis_structure.md)
* [Web Map to QGIS project](webmap2qgis.md)
* [Wildfire Susceptibility Analysis (Topographic)](wildfire_analysis.md)
* [Glossary](../../glossary.md#glossary)
# index.html.md
# NextGIS Toolbox on-premise
* [Overview](intro.md)
* [System requirements](sys_req.md)
* [Authorization](auth.md)
* [User interface](ui.md)
* [Tools](tools.md)
* [Administrator manual for NextGIS Toolbox on-premise](admin.md)
* [Select connection addresses](admin.md#select-connection-addresses)
* [NextGIS ID authorization](admin.md#nextgis-id-authorization)
* [Install and configure Docker](admin.md#install-and-configure-docker)
* [Install NextGIS Toolbox](admin.md#install-nextgis-toolbox)
* [Recommendations for reverse proxy setup](admin.md#recommendations-for-reverse-proxy-setup)
* [Operability check](admin.md#operability-check)
# 3D_models.html.md
# Uploading 3D Models
**What is a 3D model**.
3D model - is a digital representation of a three-dimensional object.
**What formats are supported**.
You can upload 3D models in formats FBX and GLB.
**How to upload the model (description of all tabs)**.
To upload a 3D model, you need to create a “3D model” resource. It is located in the right pane of NextGIS Web in the list of available resources ([Fig. 713.](#ngw3d-select-3d-model)).

The process of creating a 3D model resource is performed step by step and is divided into 4 tabs in the interface.
On the first one you need to set the name of the 3D model resource ([Fig. 714.](#ngw3d-name-3d-model-pic)). This field is required.

On the second tab it is possible to add a text description of the resource in any form ([Fig. 715.](#ngw3d-desc-3d-model-pic)).

On the third tab the user can add metadata to the 3D model resource ([Fig. 717.](#ngw3d-file-3d-model)).

On the fourth tab you need to upload a 3D model file in FBX or GLB format from your computer ([Fig. 716.](#ngw3d-metadata-3d-model)).

After clicking the “Create” button the 3D Model resource will be created in the specified NextGIS Web directory ([Fig. 718.](#ngw3d-finished-3d-model)).

# 3D_scene_visualization.html.md
# Rendering 3D scenes
NextGIS Web includes a special client application for rendering 3D scenes.
You can open the web client using the icon  or click the *Display* button inside the resource ([Fig. 757.](#ngw3d-open-3d-scene-vizual)).

Have a tour of a 3D scene in our video:
Watch on [youtube](https://youtu.be/beCsdlvCszY?si=feOM8zDsk7Nkobde).

The web client includes three main components: a 3D scene ([Fig. 757.](#ngw3d-open-3d-scene-vizual), item 1), panels ([Fig. 757.](#ngw3d-open-3d-scene-vizual), items 3, 4),
and 3D scene tools ([Fig. 757.](#ngw3d-open-3d-scene-vizual), items 7, 8).
The map scale can be changed using the scale control buttons ([Fig. 757.](#ngw3d-open-3d-scene-vizual), item 8).
The left side of the workspace functionality panel arranged:
* Layer tree
* Search
* NGW resource tree
In the search bar ([Fig. 757.](#ngw3d-open-3d-scene-vizual), item 3), as you type, a search will be performed by two sources:
* By attributive information of layers added to the map
* According to the address base of OpenStreetMap
Results appear as you type. Objects found by attribute values from added layers are shown first.
Next are the addresses containing the search string. When you select a search result from the list, the map navigates to it.
The settings bar is responsible for specifying the rendering quality of data on the scene.
When you select a layer in the layer tree, you can call the layer menu ([Fig. 757.](#ngw3d-open-3d-scene-vizual), item 2),
which contains the Zoom to function, which centers the layer on the 3D scene.
To change basemap and connect a terrain resource, use the drop-down lists ([Fig. 757.](#ngw3d-open-3d-scene-vizual), items 5, 6).
The 3D scene mode switch is used to change the way of displaying data - 3D on the Globe or 2D on a plane.
# 3D_scenes.html.md
# Creation of 3D scenes
Three-dimensional objects in NextGIS Web can be placed on a 3D scene - an analogue of a web map for three-dimensional objects.
To create it, go to the required NextGIS Web directory and select the creation of a *3D scene* resource ([Fig. 744.](#ngw3d-select-3d-scene)).

The Resource tab indicates the name of the future 3D scene ([Fig. 745.](#ngw3d-name-3d-scene)).

The ‘3D scene’ tab allows you to select the type of data display on the 3D scene - a globe or a plane ([Fig. 746.](#ngw3d-settings-3d-scene)).
It is also possible to connect Yandex Panoramas and Google Street View data by specifying the appropriate API keys.
Also you can specify a quality value that affects the performance of a 3D scene.

The ‘Extent’ window sets the area of coverage of the 3D scene in degrees ([Fig. 747.](#ngw3d-extent-3d-scene)).

There is also an option - to set the extent by the layer loaded in Web GIS ([Fig. 748.](#ngw3d-extent-by-layer-3d-scene)).
Clicking on the folder icon with a plus opens a window where you can select the layer on which you want to specify the extent of the 3D scene.

The ‘Items’ tab allows you to add and remove items of various NextGIS Web resources on/from a 3D scene - for example, 3D styles and 3D tilesets (Fig. 38),
as well as form them into various groups.

The addition takes place after you click ‘Add Item’, resulting in an open choice NextGIS Web resource box ([Fig. 750.](#ngw3d-select-elements-3d-scene)).

The *Visible* option means that when a 3D scene is opened this element will be displayed by default.
Various basemaps can be added to the 3D scene.
The addition takes place using the ‘Add’ button ([Fig. 751.](#ngw3d-add-basemap-3d-scene)) and specifies basemap resource NextGIS Web ([Fig. 752.](#ngw3d-select-basemap-3d-scene)).

To upload a basemap onto a 3D scene, you must first create it in NextGIS Web. For this there is a resource Basemap ([Fig. 753.](#ngw3d-create-basemap-3d-scene)).

You can specify the URL or find the one you need in the search In the Settings, if there is one in [QuickMapServices](https://qms.nextgis.com/) ([Fig. 754.](#ngw3d-settings-basemap-3d-scene)) directory.

The Terrain resource of the previously created TMS layer is added to the 3D scene on the Terrain tab ([Fig. 755.](#ngw3d-terrain-3d-scen-pic)).
Adding occurs through the standard addition of a resource in the corresponding window ([Fig. 756.](#ngw3d-select-terrain-3d-scene-pic)).

Permissions, description and metadata are optional.
# 3D_style.html.md
# 3D data Styles
## General
3D Data Styles are applied to vector layers that need to be created in advance by selecting the appropriate type of NextGIS Web resource ([Fig. 736.](#ngw3d-select-vect-layer))
and uploading objects into it in the [ESRI Shapefile](../../glossary.md#term-ESRI-Shapefile), [GeoJSON](../../glossary.md#term-GeoJSON), [GeoPackage](../../glossary.md#term-GeoPackage), [GeoJSON](../../glossary.md#term-GeoJSON), [GML](../../glossary.md#term-GML), [KML](../../glossary.md#term-KML), [CSV](../../glossary.md#term-CSV) or [XLSX](../../glossary.md#term-XLSX) format ([Fig. 737.](#ngw3d-upload-vect-data)).

Vector layer styling is carried out using the 3D style resource ([Fig. 738.](#ngw3d-select-3d-style)) which is a child of the vector layer resource.

At the first stage of creating a 3D style you must specify its name ([Fig. 739.](#ngw3d-name-3d-style)).

Permissions, description and metadata are optional settings. The main parameters are set on the *3D style* tab.
There are three types of styling for 3D data:
* 3D style
* POI
* Model
## 3D Style
**3D style** - a display of the layer is similar to a 2D web map.
The following options for styling geometric primitives are available:
* Stroke color
* Stroke width
* Fill color
* Height
You can set constant values or select fields from the vector layer attributes table ([Fig. 740.](#ngw3d-settings-3d-style)).

## POI
**POI** - a style selection from preset icons.
Adjustable parameters ([Fig. 741.](#ngw3d-poi-3d-style)):
* POI Colour
* Priority
* Inverse
* Limit the number of points that will be rendered on the client with the prioritization

## 3D Model
**3D Model** - styling a vector layer loaded 3D model.
Configurable parameters:
* 3D model ID - value / field of the layer attributes table, which contains the ID of the 3D model in NextGIS Web ([Fig. 742.](#ngw3d-id-3d-model))
* Scale - value/field of the layer attribute table, which contains the scale of the model display
* Rotate, degrees - value/field of the attribute table of the layer, which contains the rotation angle of the model in degrees ([Fig. 743.](#ngw3d-grad-3d-model))

# 3D_tilesets.html.md
# Uploading and storing 3D datasets
**What is a three-dimensional dataset** (format specification given on the [link](https://github.com/CesiumGS/3d-tiles)) - a special set of three-dimensional tiles,
which can handle Cesium, organized as a spatial data structure as a tree.
**What formats are supported** - cesium 3D tileset.
A tileset is described by at least one JSON file containing tileset metadata and a tree of tile objects,
each of which can refer to updated content in one of the following formats:
* [Batched 3D Model (b3dm)](https://github.com/CesiumGS/3d-tiles/blob/master/specification/TileFormats/Batched3DModel/README.md)
* [Instanced 3D Model (i3dm) (b3dm)](https://github.com/CesiumGS/3d-tiles/blob/master/specification/TileFormats/Instanced3DModel/README.md)
* [Point Cloud (pnts)](https://github.com/CesiumGS/3d-tiles/blob/master/specification/TileFormats/PointCloud/README.md)
* [Composite (cmpt)](https://github.com/CesiumGS/3d-tiles/blob/master/specification/TileFormats/Composite/README.md)
**How to upload a 3D dataset**.
To upload a three-dimensional dataset you need to create a “3D tileset” resource ([Fig. 719.](#ngw3d-select-3d-tileset)).

The process of creating a 3D tileset resource is performed step by step and is divided into 5 tabs in the interface.
The first one is to set the name of the 3D tileset resource ([Fig. 720.](#ngw3d-name-3d-tileset)). This field is required.

On the second tab it is possible to add a textual description of the resource in any form.
On the third tab the user can add metadata to the 3D tileset resource ([Fig. 721.](#ngw3d-metadata-3d-tileset)).

The fourth tab 3D TILESET involves uploading a 3D dataset from the user’s computer in a zip archive.
And also defines the offset value of the dataset along the Z axis and the correlation with the terrain data - if the option is selected,
the zero level of the tileset will be set to the terrain height ([Fig. 722.](#ngw3d-upload-3d-tileset)).

After clicking the “Create” button the 3D tileset resource will be created in the specified NextGIS Web directory ([Fig. 723.](#ngw3d-finished-1-3d-tileset)).

# 3d_dem_qgis.html.md
# How to load elevation data into QGIS 3D window
* [Order elevation data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoPackage (QGSIS) and GeoTIFF format choosing the step of contour lines.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Download and install [QGIS](https://qgis.org/en/site/forusers/download.html/).
* Launch QGIS.
* Drag and drop **hillshade.tif**, **dem.tif** and **contour_lines.gpkg** from the unpacked data folder to QGIS interface.

* On the top bar click View -> 3D Map Views -> New 3D Map View

* In 3D Configuration: set the parameters for the Terrain - select a DEM (Raster Layer), specify the raster layer **dem**, select other parameters depending on your data

* Click OK. The 3D terrain data model will appear in the window

# 404.html.md
# Page not found
Most likely, this page was moved. Go to the [main page](/index.html), or use [search](/search.html).
[Go back](/index.html)
# Auth.html.md
# Authorization
## Via cloud NextGIS ID (my.nextgis.com)
To unlock additional functionality of benefits NextGIS QGIS (switch to Pro-version NextGIS QGIS),
you must be on a [Mini or Premium](https://nextgis.com/pricing-base/) plan and login.
By default, locked tools are shown like this: .
To activate the Pro-version of NextGIS QGIS you need to login with NextGIS Account Toolbar button 
on the toolbar (see in `acc_toolbar_deactive`).

Authorization is done via a web browser which will redirect to [https://my.nextgis.com](https://my.nextgis.com).
On this page you need to enter your NextGIS ID or register (see in `auth_page`).
If you have forgotten your account information,
you can [recover](https://docs.nextgis.com/docs_ngcom/source/faq_webgis.html#i-forgot-my-account-password-nextgis-id-what-to-do) your account using the same page.

After entering the login and password, you will receive a message about successful authorization in NextGIS QGIS (see in `suscess_auth`),
and access to the Pro-functions will be unlocked .
NextGIS Account Toolbar button will change to  which indicates a successfully authorized user (see in `acc_toolbar_active`).

## Via on-premise (NGIDOP)
If you want to login via the on-premise, you must specify the appropriate Endpoint in the authorization settings (Main menu -> Settings -> Options -> NextGIS) (`ngqis_ngidop_auth_en`)

# CHANGES.html.md
# Changes
## 5.5.0
- Interactive webmap editing and configuration in display mode.
- New resource search page with advanced filtering capabilities.
- AI-powered generation of feature filters from natural language queries.
- Field configuration during vector layer creation.
- Vector layers now support boolean fields.
- Experimental support for JSON fields in vector layers.
- Limited support for marking vector layer fields as mandatory.
- Initial support for no-geometry layers.
- Support for using public S3 buckets with external raster layers.
- Enhanced raster layer preview with band configuration.
- Improved CSV import for lookup tables with preview and column mapping.
- Layer editing on webmaps enabled by default.
- HTTP API for importing feature descriptions from ZIP archives.
- Migrated from Webpack and Yarn to Rsbuild and pnpm.
- GDAL 3.8, Python 3.12, and Node.js 22 are now the minimum required versions.
## 5.4.0
- Support for feature filtering on webmaps and in the rendering HTTP API.
- S3-based storage for external raster layers with read/write support.
- Field value suggestions in feature layer filters.
- RAT attribute support for raster layer identification.
- Feature versioning enabled by default for new vector layers.
- Improved resource table and actions UI.
- Support for labels in user-defined SLD styles.
- Support for upscaling tileset layers.
- Automatic GeoTIFF compression predictor selection.
- JPEG compression enabled by default for RGB(A) raster layer pyramids.
- GPX export support for feature layers.
- Improved export performance for layers with many fields.
- Support for the Referer header in WMS and TMS client connections.
- Option to disable TLS certificate verification for WMS connections.
- Support for remote SRS in WMS client layers.
- Built-in SRS catalog based on the Proj database.
- Support for custom OnlineResource values in WMS client layers.
- TypeScript upgraded to 6.0.
- Ant Design upgraded to 6.2.
## 5.3.0
- Advanced feature table filtering capabilities.
- Viewing feature versioning history in the UI.
- Reverting versioned feature layers to previous states.
- Ability to create vector layers from existing layers and versions.
- Improved extent selector widget in webmap settings.
- Display total and filtered feature counts in feature tables.
- Dimmed out-of-scale-range layers in the tree on webmaps.
- Improvements to the printable webmap legend.
- Display measurement spatial reference system on webmaps.
- Transactional HTTP API for feature attachments and descriptions.
- Fixed PostGIS layer editing on webmaps.
- SQLAlchemy library upgraded to 2.0.
## 5.2.0
- Many new feature editing tools on webmaps.
- Improved swipe tool: vertical and horizontal swipes in any direction.
- Maximum webmap zoom level increased to 24.
- Geometry tab on feature pages.
- Zoom support for attachment preview.
- Automatic HEIF-to-JPEG conversion for feature attachments.
- Improved handling of image dimensions in descriptions.
- Support for field deletion for versioned layers.
- Better handling of inconsistent spatial reference systems in GeoTIFF files.
- Configurable Nominatim endpoint for self-hosted installations.
- WMTS protocol support in WMS server (KVP and REST).
- Improved WMS client compatibility and performance.
- Improved MVT generation performance.
- GeoPackage 1.4 compatibility improvements.
- Dropped support for GeoJSON range requests.
- React library upgraded to 19.
## 5.1.0
- Identification of raster layers on webmaps.
- Improved webmap links, preserving legend symbols in URLs.
- Ability to configure panels and tools individually for each webmap.
- Refined resource picker behavior for single and multi-selection.
- Configurable lookup table item order, including manual ordering.
- Experimental adaptive layouts for webmaps on mobile and tablet devices.
- Support for dash patterns in user-defined styles.
- Support for adding fields to layers with versioning enabled.
- Creation of raster layers from ZIP archives and PAM support.
- Support for GDAL PAM georeferenced (.aux.xml) JPEG and PNG rasters.
- Configurable default basemaps for on-premises installations.
- Improved handling of date and bigint fields in UI and HTTP API.
- Improved handling of geom fields in feature layers.
- Clean up unreferenced file objects during maintenance by default.
- Python 3.10+ is now the minimum required version.
- OpenLayers library upgraded to 10.4.
## 5.0.0
- Webmap migrated to React with many new features.
- The identification panel enabled by default, replacing webmap popups.
- Resource editing interface fully migrated to React.
- New feature display page and modal dialog with vector tile geometries.
- Enhanced resource deletion confirmation with details of resources to delete.
- On-demand webmap legend symbol loading, optimizing opening time.
- Configurable SSL mode for PostGIS connections.
- Handling of invalid geometries for MVT vector tiles.
- Better support for date and time fields in WFS clients.
- Expanded JSON output format capabilities in WMS services.
- Improved handling of fid fields in feature layers.
- Extended resource search HTTP API.
- Chrome 118+, Safari 17+, Edge 116+, or Firefox 115+ is required.
- All legacy AMD modules migrated to TypeScript, and Dojo dependency removed.
- Experimental support for Python 3.10.
## 4.9.0
- New resource creation dialog.
- Identification panel replaces popup on the webmap.
- Font management in the control panel.
- Preview layers with leaving the current page.
- Preview of the basemap on the resource editing page.
- Support for empty geometries when importing vector layers.
- Customizable web map title.
- WFS client component turned on by default.
- Data structure permission scope removed.
- TUS uploader is available using CORS.
- All of resource widgets migrated to Antd and React.
- Fix uploading of zero-length files.
## 4.8.0
- Customizable print layout including legend.
- Exclusive layer groups on webmaps.
- User-defined favorite resource pages.
- Measurement SRS configuration per-webmap.
- Experimental support for feature versioning.
- Better handling of incomplete geometry parts.
- Show feature attachment descriptions in the viewer.
- Extent information in PostGIS layer diagnostics.
- Transparent annotation polygons for better visibility.
- Switch to nearest neighbor resampling for raster pyramids.
- Experimental support for NULL geometries.
- Support for upper-case placeholders in TMS connections.
- Metadata permission scope and webmap display permission removed.
- Sentry client-side JavaScript integrations.
- Cache seeding and invalidation removed, use NextGIS Geoservices instead.
- Most of resource widgets migrated to Antd and React.
## 4.7.0
- Turn legend categories on/off for a better experience on webmaps.
- Lots of customization options for embedded webmaps: map tools and panels.
- Ability to exclude feature layer fields from text search.
- Configurable permissions for groups, users, SRS and CORS management.
- Enhanced feature attachment viewer now includes panoramic images support.
- Ctrl+click opens feature attachment in a fixed tab.
- Ability to copy printing parameters as a URL for sharing.
- Support for custom SVG logos in addition to PNG.
- Add export to CSV and import from CSV for lookup tables.
- Support for multiple replicas and long-runnning requests.
- Update minimum required NodeJS version to 20.0.
## 4.6.0
- Support for lookup tables for feature layer attributes.
- Print to TIFF format in addition to PDF, JPEG and PNG.
- Geometry-based filtering of feature tables on webmaps.
- Autodetection of minimum and maximum scales for webmap and WMS layers.
- Refresh feature tables after saving layer changes on webmaps.
- Improved handling of `id` and `fid` attributes of vector layers.
- Improved handling of date and time inputs.
- Passing a zoom level to webmaps via `zoom` attribute.
- Support for OpenID Connect UserInfo endpoint.
## 4.5.0
- New tileset resource for storing and serving prerendered tiles.
- New OGC API Feature service with read and write support.
- Up to 2x speed-up of loading vector layer data.
- Differentiate webmap intial and contstraining extents.
- Support for Google Analytics metrics.
- Support for basic user-defined styles.
- Save to PDF from the webmap printing panel.
- Check effective permissions of other users for a resource.
- Legends for webmaps is enabled by default.
- Lots of improvements in feature editing widgets.
- OutputFormat declaration in WFS for better compatibility.
- Store audit journal in PostgreSQL database instead of ElasticSearch.
- React library upgraded to 18.
- Ant Design library upgraded to 5.
## 4.4.0
- Auto-generated and configurable legends for webmaps.
- Reordering layers via drag-and-drop while viewing webmaps.
- Changing layer opacity while viewing webmaps.
- Creation of an empty vector layer without uploading a file.
- Ability to replace existing vector layer features and fields from a file.
- Brand-new feature table based on React.
- Resource and feature description editors updated to CKEditor 5.
- Improved handling of resource descriptions on webmaps.
- Zoom to a filtered set of features on webmaps.
- Geometry properties in the identification popup.
- Show the cursor location and the current extent on webmaps.
- Zoom to all layers on webmaps.
- Support for linear and polygonal annotations.
- Default display names for resources during creation.
- Deletion of all features and changing geometry type for vector layers.
- Limit by extent while exporting feature layers.
- Ability to export a filtered set of features.
- MapInfo formats support when creating a vector layer.
- TMS client: parallel fetching of tiles and HTTP/2.
- Reasonable resource tabs ordering and auto-activation.
- Improved usability of the layers tree on webmaps.
- Fast PNG compression for rendering.
- Chrome 102+, Safari 15+, Edge 109+ or Firefox 102+ is required.
- User permissions section is moved to a separate page.
- OAuth-based automatic group assignment.
## 4.3.2
- Fix feature attachment download issues.
## 4.3.1
- Fix resource group selection issue while cloning webmaps.
## 4.3.0
- Support for webmap cloning via UI.
- Search by coordinates on web maps.
- CSV and XLSX support when creating a vector layer.
- Export and import feature layer attachments.
- Vector layer export to KML and KMZ formats.
- Fields selection while exporting feature layer.
- Assign default groups while creating users via UI.
- Experimental support for authorization links.
- Use resource SRS by default while exporting raster and vector layers.
- Support for booleans and nulls in resource metadata.
- Support for fixed length `character` columns in PostGIS layers.
- Support for materialized views and 25D geometries in PostGIS layers.
- Ability to turn off user password and keep only OAuth authentication.
- Check for disk free space in the healthcheck.
- Ability to search through resources recursively in REST API.
- OpenLayers library upgraded to 6.15.1.
## 4.2.0
- “Locate me” tool on web maps.
- Identifiable setting for web map layers.
- Batch deletion and moving of resources.
- Ability to download raster layers as an internal representation.
- PostGIS connection and layer diagnostic tool.
- Support for quad-key basemaps on web maps.
- OAuth improvements: NextGIS ID integration, simultaneous authorization code
and password grant types.
- Improved management of spatial reference systems and catalog integration.
- Better support for 25D geometries on web maps and PostGIS layers.
- Improved handling of URLs in descriptions and feature layer fields.
- Cloud-optimized GeoTIFF (COG) enabled by default.
- In-place conversion between COG and non-COG rasters.
- Hide empty groups and groups with no accessible layers on web maps.
- M dimension stripping while creating vector layers in LOSSY mode.
- Selecting features on web maps via `hl_*` URL parameters.
- Ability to inject some HTML into the base template for metrics and counters.
- Fast JSON serialization and deserialization based on orjson library.
- Completed control panel migration to Antd and React.
## 4.1.0
- Cloud-optimized GeoTIFF (COG) support for raster layers.
- Browser compatibility test and Internet Explorer deprecation.
- Experimental support for long-runnning requests for raster and vector layers
creation using `lunkwill` extension.
- Private annotations on web maps, visible only for authors.
- Wrapping around the dateline for tile-based layers on web maps.
- A lot of improvements for the control panel: filters, batch operations, etc.
- Improved handling of vector layer sources with `id` and `geom` fields.
- Reprojection into different coordinate systems in WMS and WFS services.
- Export feature layer using field display names (aliases) instead of keynames.
- Support for CORS domain wildcards (like `https://*.csb.app`).
- WFS client and server simple filters support.
- Improved handling of coordinates outside boundaries of coordinate systems.
- Support for 25D geometries in PostGIS layers.
- Ability to filter NULL values in feature REST API.
- Unknown fields in REST API filters return an error.
- Improved handling of external services errors and timeouts.
- Upgraded dependencies: Pyramid 2.0, SQLAlchemy 1.4, and OpenLayers 6.10
## 4.0.0
- Source layer selection while creating vector layers from multi-layer sources,
such as ZIP-archives or Mapinfo TABs.
- On-the-fly reprojection for WMS and WFS services.
- Ability to restrict address search by a country if using Nominatim.
- Hide inaccessible layers while displaying web maps.
- Highlight feature when selecting from search results.
- Display emails as active `mailto:` links in the webmap popup.
- Ability to delete users and groups from the control panel.
- Ability to change resource owner in UI and REST API.
- Automatic generation of keynames for WMS and WFS services.
- Improved support for Unicode field names for WFS services.
- Granular control setting for resource export availability.
- ISO-8601 date and time formatting in feature layer REST API via
`dt_format=iso` option.
- Drop Python 2.7 support, NextGIS Web now requires Python 3.8+.
- PostgreSQL 10+, PostGIS 2.5+ and GDAL 3.0+ are required now.
- Synchronization of translations with POEditor.
- Yandex Maps-based address search on the webmap.
## 3.9.0
- Simple tool for previewing resources on the map.
- Resource quick search tool in the page header.
- Disable/enable address search via settings in the control panel.
- Ability to constraint address search area by web map initial extent.
- Zoom to a better extent from address search and bookmark panel.
- Language autodetection, per-user language setting, and support for the
external translation files.
- Automatic downsampling of a social preview image to 1600x630 pixels.
- Better support for KML: LIBKML GDAL driver is used when available.
- Filtering features by ID in feature REST API.
- Layers with an “id” field can be loaded if the field has an integer type.
- Information about available distribution versions in the control panel.
- Experimental storage accounting and estimation subsystem.
## 3.8.0
- Ability to constraint a web map to the default extent.
- More length and area units in web map settings.
- Automatic correction of errors during the creation of a vector layer.
- Support for creation of vector layers from GML and KML files.
- User login is case insensitive when logging in.
- Configuration option for disabling social networks sharing buttons.
- Performance improvements in geometry handling and rendering, especially when
converting between WKT and WKB formats.
- Performance improvements in tile cache component.
- Improved word wrapping in web map identification popup.
- Minimum and maximum scale restrictions in WMS server.
- Experimental integration of modern JavaScript and Webpack.
- Quota for the maximum number of enabled users.
- OpenLayers library upgraded to 6.5.0.
- OAuth server logout support via logout redirect endpoint.
## 3.7.0
- Add database migrations framework and automatic migrations applying.
- External access links for styles, web maps (TMS), and feature layers (MVT).
- Experimental WFS client and raster mosaic, which is disabled by default.
- Add support of 1.1.0 version in WFS server implementation.
- Improved handling of NODATA values in raster layer and raster style.
- Compression level of PNG images is set to 3, which is much faster.
- Performance improvements and better concurrency for tile cache.
- New “CSV for Microsoft Excel” export format for better Excel compatibility.
- Fix infinite wait of database lock, including during vector layer deletion.
- Improved handling of invalid JSON bodies in RESP API, now the correct error
message is returned.
- Vector layer export to MapInfo MIF/MID format.
- Vector layer export to Panorama SXF format.
## 3.6.0
- Major improvements and bug fixes in WFS protocol implementation.
- Permission model changes: now any action on resource requires `read` permission
from scope `resource` on the resource and its parent.
- PostGIS layer extent calculation and improved extent calculation in vector layer.
- Vector layer export to GeoPackage format.
- Faster processing of empty tiles and images.
- Tile cache and webmap annotations are enabled by default.
- Command to delete orphaned vector layer tables.
- HTTP API with resource permissions explanation.
- Support for `like`, `geom` and `extensions` in feature layer REST API.
- Support for GeoJSON files in ZIP-archive and faster ZIP-archive unpacking.
- Clickable resource links in webmap, WMS and WFS services.
- Ability to disable SSL certificate check for TMS connection.
- Lookup table component is part of `nextgisweb` core package `nextgisweb`.
- Fix TMS layer tile composition in case of extent outside the bounds.
- Fix GDAL > 3 compability issues, including axis orientation.
- SVG marker library resource available to renderers.
## 3.5.0
- Raster layer export to GeoTIFF, ERDAS IMAGINE and Panorama RMF formats.
- Customizable link preview for resources.
- Improved resource picker: inappropriate resources are disabled now.
- New implementation of WFS server which fixes many bugs.
- Quad-key support in TMS connection and layer.
- Support for `geom_format` and `srs` in feature layer REST API (POST / PUT requests).
- Session-based OAuth authentication with token refresh support.
- Delete users and groups via REST API.
- Track timestamps of user’s last activity.
- Customization of web map identify popup via control panel.
- Speedup cleanup of file storage maintenance and cleanup.
- Fix bulk feature deletion API when passing an empty list.
- Fix bug in CORS implementation for requests returning errors.
- Fix coordinates display format in web map identification popup.
- Fix tile distortion issue for raster styles
## 3.4.2
- Fix WMS layer creation.
## 3.4.1
- Fix layout scroll bug in vector layer fields editing.
## 3.4.0
- New [tus-based](https://tus.io) file uploader. Check for size limits before starting an upload.
- Server-side TMS-client. New resource types: TMS connection and TMS layer.
- Create, delete and reorder fields for existing vector layer.
- Improved [Sentry](https://sentry.io) integration.
- WMS service layer ordering.
- Stay on the same page after login.
- Error messages improvements on trying to: render non-existing layer, access
non-existing attachment or write a geometry to a layer with a different geometry
type.
# DEM.html.md
# Uploading elevation data
**What is a terrain (DEM - Digital elevation model)** - is a digital representation of the earth’s surface as a continuous phenomenon describing it with some precision,
in the form of a raster or regular grid of cells of a given size.
For the Cesium client the relief is a TMS service in the EPSG: 4326 projection which renders tiles in a special quantized-mesh format.
As a source of heights the terrain provider uses either a raster layer with a loaded single-band image or a TMS service that returns heights in a specially encoded RGB raster.
Of the TMS services, Mapzen and Mapbox are supported.
**Getting mesh from TMS connection**.
To connect the **Terrain-RGB terrain** you need to create a **TMS connection** ([Fig. 724.](#ngw3d-select-tms-connection)).

The first step is to name the TMS connection ([Fig. 725.](#ngw3d-name-tms-connection)).

Description and metadata tabs are optional. When creating a connection be sure to configure the parameters of the TMS connection tab ([Fig. 726.](#ngw3d-settings-tms-connection)).
To connect to the Mapbox terrain you need to specify a custom connection method, URL template, parameter and the API key itself, auth username and password.
All settings are described [here](https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb),
an api-key of access token is generated when logging on [https://account.mapbox.com/](https://account.mapbox.com/).
You can also Skip SSL/TLS certificate verification and specify tiling scheme. After you specify all the parameters created TMS connection ([Fig. 727.](#ngw3d-finished-tms-connection)).

Next you need to create a TMS layer for the Mapbox terrain based on the ready-made TMS connection ([Fig. 728.](#ngw3d-select-tms-layer)).

By analogy with other types of resources the name, description and metadata are also set. ([Fig. 729.](#ngw3d-name-tms-layer)).

The TMS layer tab contains settings for connection through the TMS connection resource created earlier which must be specified in the appropriate field ([Fig. 730.](#ngw3d-connection-tms-layer)).
If necessary you should specify additional parameters depending on the specifics of the loaded terrain.
For Mapbox terrain you must specify the maximum zoom level - 15 ([Fig. 731.](#ngw3d-zoom-tms-layer)).

After saving the TMS layer it will appear in the corresponding NextGIS Web directory ([Fig. 732.](#ngw3d-finished-tms-layer)),
and its child resource, **Terrain**, will become available ([Fig. 733.](#ngw3d-select-terrain-provider)).
For it, you must specify the name and encoding ([Fig. 734.](#ngw3d-encoding-terrain-provider)).

After creating a resource it will appear in the corresponding NextGIS Web directory ([Fig. 735.](#ngw3d-finished-terrain-provider)).

# add_regions.html.md
# Add region and settlement names to attributes
Appends attributes with administrative division and settlement names to any vector layer features. Uses data.nextgis.com extract as input source of region and settlement names.
Inputs:
* Vector file - Geopackage, GeoJSON file or zipped ESRI Shapefile;
* Zip file with data extract from data.nextgis.com;
* Output name (optional).
Outputs:
* GeoPackage file containing data with added attributes;
* CSV file with the same data.
Launch the tool: [https://toolbox.nextgis.com/t/add_regions](https://toolbox.nextgis.com/t/add_regions)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# admin.html.md
# Installation (Administrator manual)
## Introduction
This manual describes the process of deploying NextGIS GeoServices software on-premise. Mainly it uses Docker platform and docker-compose tool. All steps are performed on Linux-based OS.
## Select endpoints
NextGIS GeoServices uses one HTTP (or HTTPS) endpoint. Users interact with the software via Web interface and API. The default value is [http://server.example.com:8088](http://server.example.com:8088) where server.example.com is the DNS name of the server where the software is deployed. If strictly necessary, the server IP address can be used instead of server.example.com.
If your IT infrastructure allows for it, it is recommended to set up a reverse proxy for TLS encryption and using HTTPS. It is especially important if the software is to be accessed not just from the local network, but also from the Internet. In that case the endpoints depend on the settings of the reverse proxy.
Contact your IT department to choose endpoints you wish to use and note them down, you’ll need them later. The reverse proxy is set up by the client’s IT department, it is not a responsibility of NextGIS company. The required parameters are cited [below using Nginx as example](https://docs.nextgis.com/docs_geoserv_prem/source/admin.html#nggs-prem-admin-proxy).
## Install and configure Docker
#### IMPORTANT
All steps in this section must be performed by the `root` user. If you use `sudo` to avoid mixing up the commands, we recommend first running `sudo -i` to get a fully functional root user session.
If the server does not yet have Docker Engine and Docker Compose installed, first you need to install them or update them to the latest versions:
* [Docker Engine](https://docs.docker.com/engine/install/)
* [Docker Compose](https://docs.docker.com/compose/install/linux/)
To get the images log in to NextGIS Container Registry with the username (example) and password (sesame) provided by NextGIS:
```default
$ docker login cr.nextgis.com -u example -p sesame
Login Succeeded
```
If the software is deployed to a server without Internet access, generate a single-file image archive using the tool [NextGIS Container Registry export](https://toolbox.nextgis.com/t/ngcr_export). You’ll need to transfer it to the server and load the images using ‘docker load’ command.
## Install NextGIS GeoServices
#### IMPORTANT
All steps in this section must be performed by the `root` user. If you use `sudo` to avoid mixing up the commands, we recommend first running `sudo -i` to get a fully functional root user session.
On the server where you plan to deploy GeoServices, create the `/srv/geoservices` directory, then go to it, download the configuration template ([docker-compose-2.26.0.tar.bz2](https://nextgis.com/onpremise/geoservices/docker-compose-2.26.0.tar.bz2), where 2.26.0 is the current version) and unpack it. If the server does not have Internet access, download the file on another PC and transfer it to the server.
```default
$ mkdir /srv/geoservices
$ cd /srv/geoservices
$ wget https://nextgis.com/onpremise/geoservices/docker-compose-2.26.0.tar.bz2
$ tar jxf docker-compose-2.26.0.tar.bz2
Edit the .env file in a text editor and enter the values for these environmental variables: POSTGRES_PASSWORD, DB_PASSWORD, BM_DB_PASSWORD (must have the same values), ADMIN_PASSWORD and SESSION_KEY. In the end you should get something like this:
IMAGE_VERSION=2.26.0
IMAGE_BASE=cr.nextgis.com/geoservices
COMPOSE_BIND=0.0.0.0
NO_PROXY=app,postgres,redis,s3,node-renderer
POSTGRES_USER=geoservices
SESSION_KEY=secret1
POSTGRES_PASSWORD=secret2
DB_PASSWORD=secret2
BM_DB_PASSWORD=secret2
ADMIN_PASSWORD=secret3
```
To connect NextGIS GeoServices to your NextGIS Web instance also add these environmental variables:
* NGW_URL - your company WEB GIS url, i.e. [https://demo.nextgis.com](https://demo.nextgis.com).
* NGW_LOGIN - user name with sufficient permissions, if empty - guest connection will be used.
* NGW_APIKEY - user password.
Add these variables to docker-compose using template above.
After this launch the Docker Compose stack. We recommend launching postgres service first, then after about 30 seconds launch the rest:
```default
$ docker compose up -d postgres && sleep 30
[+] Running 3/3
✔ Network geoservices_default Created 0.0s
✔ Volume "geoservices_postgres" Created 0.1s
✔ Container geoservices-postgres-1 Started 4.2s
$ docker compose up -d
[+] Running 8/8
✔ Volume "geoservices_s3" Created 0.0s
✔ Volume "geoservices_secret" Created 0.1s
✔ Volume "geoservices_data" Created 0.0s
✔ Volume "geoservices_redis" Created 0.1s
✔ Container geoservices-postgres-1 Running 0.0s
✔ Container geoservices-redis-1 Started 7.3s
✔ Container geoservices-s3-1 Started 7.5s
✔ Container geoservices-node-renderer-1 Started 0.2s
✔ Container geoservices-app-1 Started 5.9s
```
This completes the installation. If you use HTTPS, next [configure the reverse proxy server](https://docs.nextgis.com/docs_geoserv_prem/source/admin.html#nggs-prem-admin-proxy). Otherwise proceed to [operability check](https://docs.nextgis.com/docs_geoserv_prem/source/admin.html#nggs-prem-admin-check).
## Recommendations for reverse proxy setup
#### IMPORTANT
All steps in this section must be performed by the `root` user. If you use `sudo` to avoid mixing up the commands, we recommend first running `sudo -i` to get a fully functional root user session.
To use HTTPS encryption we recommend setting up a reverse proxy server based on Nginx. For reference here’s a fragment of the configuration file for geoservices.example.com:
```default
server {
server_name geoservices.example.com;
# Server directives: listen, ssl_* etc
location / {
client_max_body_size 2G;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
```
The client_max_body_size directive defines the max size of the upload file (2 GiB in our example).
## Operability check
In a Web browser open the Web interface of NextGIS GeoServices using the URL you’ve chosen.
A sign-in form should appear. Enter the username ‘admin’ and the password that you set in the ADMIN_PASSWORD variable.
Go to the About page, it must look like this:

# admin.html.md
# Administrator manual for NextGIS Toolbox on-premise
## Select connection addresses
Toolbox On-Premise uses two endpoints: HTTP (or HTTPS):
* Users interact with the software via Web interface and API. The default value is `http://server.example.com:58347` where server.example.com is the DNS name of the server where the software is deployed. If strictly necessary, the server IP address can be used instead of server.example.com.
* The Buildbot interface is an auxiliary address, not used during normal operation, but might be required to allow the support team to resolve various issues. The default value is `http://hostname.example.com:61978`.
If your IT infrastructure allows for it, it is recommended to set up a reverse proxy for TLS encryption and using HTTPS. It is especially important if the software is to be accessed not just from the local network, but also from the Internet. In that case the addresses of the entry points depend on the settings of the reverse proxy. The recommended parameters are:
* Toolbox Web UI and API - [https://toolbox.example.com](https://toolbox.example.com)
* Buildbot interface - [https://avral.example.com](https://avral.example.com)
Contact your IT department to choose addresses you wish to use and note them down, you’ll need them later. The reverse proxy is set up by the client’s IT department, it is not a responsibility of NextGIS company. The required parameters are cited below using Nginx as example.
```default
TOOLBOX_URL
BUILDBOT_URL
```
## NextGIS ID authorization
Toolbox On-Premise uses NextGIS ID On-Premise as an authorization server. It is supplied as part of NextGIS Web On-Premise. First find our the address of NextGIS ID On-Premise connection. Make sure you can log in as administrator. The address may be something like [https://ngid.example.com](https://ngid.example.com) or [http://server.example.com:8081](http://server.example.com:8081). Note the connection address, you’ll need it later:
```default
NEXTGISID_URL
```
Add the TOOLBOX_URL variable to the the x-shared section of the docker-compose.yaml file to get the following:
```default
x-shared: &shared
NEXTGISID_URL: "https://ngid.example.com"
NEXTGISWEB_URL: "https://ngw.example.com"
TOOLBOX_URL: "https://toolbox.example.com"
NEXTGISID_INSTANCE_NGID: "a73ed33d-7e04-4405-a1fc-90188093268e"
NEXTGISID_ADMINISTRATOR_NGID: "cc533d32-6123-4d5f-8ffe-80e0135a54b6"
```
On the server where NextGIS ID On-Premise (NextGIS Web On-Premise) is installed go to \`\` /srv/ngwdocker\`\` and edit the file docker-compose.yaml (for example in a text editor). Then restart the stack. Note down the value of the NEXTGISID_ADMINISTRATOR_NGID variable from the x-shared section.
```default
$ cd /srv/ngwdocker
$ nano docker-compose.yaml
$ docker compose up -d
```
```default
NEXTGISID_ADMINISTRATOR_NGID
```
## Install and configure Docker
If the server does not yet have Docker Engine and Docker Compose installed, first you need to install them or update them to the latest versions:
* [Docker Engine](https://docs.docker.com/engine/install/)
* [Docker Compose](https://docs.docker.com/compose/install/linux/)
To get the images log in to NextGIS Container Registry with the username (example) and password (sesame) provided by NextGIS:
```default
$ docker login cr.nextgis.com -u example -p sesame
Login Succeeded
```
If the software is deployed to a server without Internet access, generate a single-file image archive using the tool [NextGIS Container Registry export](https://toolbox.nextgis.com/t/ngcr_export). You’ll need to transfer it to the server and load the images using ‘docker load’ command.
Toolbox On-Premise needs Docker Swarm. Initialize it after installation by running the following:
```default
$ docker swarm init
```
## Install NextGIS Toolbox
On the server where you plan to deploy Toolbox On-Premise, create the `/srv/toolbox` directory, then go to it, download the configuration template (`docker-compose-25.12.0.tar.bz2`, where 25.12.0 is the current version) and unpack it. If the server does not have Internet access, download the file on another PC and transfer it to the server.
```default
$ mkdir /srv/toolbox
$ cd /srv/toolbox
$ wget https://nextgis.com/onpremise/toolbox/docker-compose-25.12.0.tar.bz2
$ tar jxf docker-compose-25.12.0.tar.bz2
```
Generate a password for Buildbot and note it down, you’ll need it later:
```default
$ tr -dc A-Za-z0-9 < /dev/urandom | head -c 12; echo
ezn81wfERYOW
```
```default
TOOLBOX_BUILDBOT_SECRET
```
Edit the .env file in a text editor, filling in the values of the variables you’d noted down. In the BUILDBOT_REGISTRY_AUTH variable, enter the user name and password (separated by a colon) for the NextGIS Container Registry connection. In the end you should get something like this:
```default
IMAGE_VERSION=25.12.0
IMAGE_BASE=cr.nextgis.com/toolbox
COMPOSE_BIND=0.0.0.0
TOOLBOX_URL=https://toolbox.example.com
BUILDBOT_URL=https://avral.example.com
NEXTGISID_URL=https://ngid.example.com
NEXTGISID_ADMINISTRATOR_NGID=7f16c028-df44-457b-be6d-cd9075fad034
TOOLBOX_BUILDBOT_SECRET=ezn81wfERYOW
BUILDBOT_REGISTRY_AUTH=example:sesame
```
After that you can launch the Docker Compose stack. We recommend launching postgres service first, then after about 30 seconds launch the rest:
```default
$ docker compose up -d postgres && sleep 30
[+] Running 1/1
✔ postgres Pulled 1.0s
[+] Running 3/3
✔ Network toolbox_default Created 0.1s
✔ Volume "toolbox_data_postgres" Created 0.0s
✔ Container toolbox-postgres-1 Started 0.3s
$ docker compose up -d
[+] Running 3/3
✔ background Pulled 1.6s
✔ app Pulled 1.6s
✔ docker Pulled 1.6s
✔ buildbot Pulled 1.6s
[+] Running 5/5
✔ Volume "toolbox_data_storage" Created 0.0s
✔ Container toolbox-postgres-1 Running 0.0s
✔ Container toolbox-background-1 Started 0.3s
✔ Container toolbox-app-1 Started 0.3s
✔ Container toolbox-docker-1 Started 0.3s
✔ Container toolbox-buildbot-1 Started 0.3s
```
This completes the installation. If you use HTTPS, next configure the reverse proxy server. Otherwise proceed to operability check.
## Recommendations for reverse proxy setup
To use HTTPS encryption we recommend setting up a reverse proxy server based on Nginx. For reference here’s a fragment of the configuration file for toolbox.example.com:
```default
server {
server_name toolbox.example.com;
# Server directives: listen, ssl_* etc
location / {
client_max_body_size 2G;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:58347;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
```
The client_max_body_size directive defines the maximum size of the uploaded file (2 GiB in the example), it is needed only for the web interface (not needed for Buildbot).
## Operability check
In a browser open the Toolbox Web interface using the URL you chose (TOOLBOX_URL). You should see the main page with the list of tools and “Sign in” button in the top right corner.
Press **Sign in**, you’ll be redirected to NextGIS ID On-Premise. You may need to enter the password for administrator. After that you should be redirected back to the Toolbox interface. In the top right corner the current user’s username should be displayed.
Select the **Hello, World** tool and try to run it. The first run of a tool may take longer because that’s when the Docker tool image is downloaded from the NextGIS Container Registry.
Try to run **Convert vector layer** using the test data. It allows to test uploading the input and downloading the output file.
# admin_interface.html.md
# Main interface
Available controls are different [for guests](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#guest) and users who are [logged in](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#authorization).
## Authorization
Open the Web GIS and press “Sign in” in the top right corner.

In the opened dialog press the blue button that reads **Sign in with NextGIS ID**.

You will be redirected to my.nextgis.com authorization page. Enter your username or email you used for registration, then on the next page enter your password.

After the authorization is completed successfully you will be redirected back to the Web GIS.
## Home page
After login the user is taken to the home page shown on [Fig. 283.](#admin-index-pic)

Home page includes main menu pane, (see item 1 in [Fig. 283.](#admin-index-pic)) which has the following links (see [Fig. 284.](#ngweb-main-page-main-menu-pic)):
* Resources
* Control Panel
* Help
* Account

Description pane (see item 4 in [Fig. 283.](#admin-index-pic)) displays type of resource and owner as well as description (if available).
Child resources pane (see item 5 in [Fig. 283.](#admin-index-pic)) contains a list of all resources placed in a main group.
The table contains name and type of the resource and action buttons (edit, delete, for some types of resources - preview, open the attribute table).
“Create resoruce” button opens a pop-up window where you can choose the type of resource you want to create.
In current version it is possible to add the following types of data to the Main resource group:
* Basemap
* Collector project
* Lookup table
* OGC API - Features service
* PostGIS connection
* PostGIS layer
* Raster layer
* Resource group
* TMS connection
* TMS layer
* Trackers group
* Vector layer
* Web Map
* WFS service
* WMS connection
* WMS layer
* WMS service
Depending on your NGW version you may also add:
* SVG marker library
* 3D model
* 3D scene
* 3D tileset
Actions pane (see item 7 in [Fig. 283.](#admin-index-pic)) contains tools for adding data and executing operations with the current resource. For the Main resource group the only available operation is Update (i.e. edit).
On the main page there is also a block of extra links:
* [Demo projects](https://docs.nextgis.com/docs_ngcom/source/demoprojects.html);
* User permissions - show access rights for the logged in user. [Learn more about user permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html);
* JSON view.
## Language change
Any authorized user can switch the interface language.
To do this, in the upper right corner on the user icon, go to the “Settings” section.

The following languages are available for selection ([Fig. 285.](#admin-settings-lang-pic))
* Default browser
* Russian
* English
* Bulgarian
* Chinese
* Czech
* French
* German
* Italian
* Polish
* Spanish
* Portuguese

## Resource search
For easy search for resources and navigation, there is a search bar in the top bar ([Fig. 287.](#admin-search-bar-pic)).
The search is carried out in the entire existing database, regardless of which directory the user is currently in.

See how the search works in our video:
Watch on [youtube](https://youtu.be/q6h-zL4yg0c?si=FKHlTbneOmen5O5k).
Advanced search with more parameters is activated by the  icon next to the search bar.
In advanced search mode you can search resources by:
* Resource type - select one or multiple;
* Owner - select one or multiple;
* Root resource;
* Name.
Pick the parameters and click **Search**.

Search results show the full path to the resource.
You can also search by [metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-metadata-tab) and technical key of the resource. To activate these search parameters, click  next to the **Search** button.
To search by metadata, click  and enter a key-value pair. You can add multiple metadata pairs.

See how the advanced search works in our video:
Watch on [youtube](https://youtu.be/RGFhdQHjXjE?si=1quN_6Q2VOet8XK7).
## Control panel
NextGIS Web Control panel is available through the main menu. Press the  button in the top right corner (see item 1 in [Fig. 283.](#admin-index-pic)) and select “Control panel”.
Control panel has several sections, see [Fig. 290.](#admin-control-panel).

Control panel allows to execute the following actions:
* [Manage NextGIS Web groups and users](https://docs.nextgis.com/docs_ngweb/source/users.html)
* [Display information about the system and storage](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html)
* Access cadaster services
* [Add participants of Collector projects](https://docs.nextgis.com/docs_ngweb/source/collector.html)
* [Set the name of your Web GIS](https://docs.nextgis.com/docs_ngweb/source/look.html#web-gis-name)
* [Configure CORS](https://docs.nextgis.com/docs_ngweb/source/cors.html)
* [Manage custom fonts](https://docs.nextgis.com/docs_ngweb/source/look.html#font-management)
* [Set CSS styles](https://docs.nextgis.com/docs_ngweb/source/look.html#customize-the-design-with-css)
* [Specify NGW start page (home path)](https://docs.nextgis.com/docs_ngweb/source/look.html#how-to-change-the-homepage-address)
* [Set custom Logo (in the upper left corner)](https://docs.nextgis.com/docs_ngweb/source/look.html#upload-a-logo)
* [Set up Analytics](https://docs.nextgis.com/docs_ngweb/source/analytics.html)
* [Specify which users see the data export button](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#resource-export)
* [Customize display of Tracks](https://docs.nextgis.com/docs_ngweb/source/trackers.html)
* Set up [Feature versioning by default](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-default)
* [Customize Web Maps](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html)
* [Add spacial reference systems](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html)
* [Customize UI elements with White Label module (on-premise only)](https://docs.nextgis.com/docs_ngweb/source/label.html)
For more information about creation of user groups and users and granting
permissions see
```
`this section
## Resource view
After login to administrative interface the user is taken to home page.

The resource list allows users to perform some actions by clicking icons next to the resource name:
*  open the resource edit page;
*  delete resource;
*  view user permissions for the resource;
*  open JSON view of the resource.
Other actions can be available depending on the resource type, including:
*  preview;
*  open (for Web Maps);
*  view resource gallery;
*  open feature table (for vector layers);
*  manage attachments (for vector layers);
*  save features of the vector layer as a file, etc.
Press three dots in the right corner of the table title to open the resource list menu.

This menu allows to:
* Select multiple resource to be [moved](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#using-multiple-selection) or [deleted](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#deleting-several-resources-at-once);
* View additional columns in the resource list table: creation date and resource volume.
Additional columns allow to sort the resource list by date or size:

To open the resource page click on the corresponding row of the table. The resource page contains properties, attributes, a link for external access and a list of child resources if there are any (see [Fig. 294.](#resource-details-pic)).

Here you can also enter the resource [edit mode](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html).
## Feature table
Some resources contain a set of features that can be viewed as a table.
Press the “Table” icon opposite the resource name or, if you are on the layer’s resource page, select “Table” in the features pane.

Authorized users can [edit features](https://docs.nextgis.com/docs_ngweb/source/feature_table.html) from the feature table.
## Data export
Web GIS allows to export data from Vector layers and PostGIS layer in the following formats:
* [GeoPackage](../../glossary.md#term-GeoPackage)
* [CSV](../../glossary.md#term-CSV) and CSV for Microsoft Excel
* [ESRI Shapefile](../../glossary.md#term-ESRI-Shapefile)
* [AutoCAD DXF](../../glossary.md#term-AutoCAD-DXF)
* [Mapinfo TAB](../../glossary.md#term-MapInfo-TAB)
* [MapInfo MIF/MID](../../glossary.md#term-MapInfo-MIF-MID)
* [GeoJSON](../../glossary.md#term-GeoJSON)
* [KML](../../glossary.md#term-KML)
* [KMZ](../../glossary.md#term-KMZ)
* [GPX](../../glossary.md#term-GPX)
Depending on the format, additional file components are exported making further use of the exported data more convenient. For example CSVT (field structure description) and PRJ (coordinate system description) are added to CSV and CPG (codepage) to ESRI Shapefile.
#### NOTE
Geometry and attributes are supported for export. Features’ descriptions, metadata and images can’t be exported in the described way but can be requested using [NextGIS API](../../docs_ngcom/source/ngapi.md#ngcom-ngapi).
To export data, click  **Save as** in the resource menu or, if you are on the layer’s resource page, select “Save as” in the Features pane on the right.

On the next page you can configure the export file. By default data is exported to a GeoPackage file using UTF-8 encoding with all fields included. [Learn more](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#export-settings) about export settings.

Click **Save** to save the file to your device.
### Export settings
The parameters of the export are:
* **Data format** - GeoPackage as the default, select one of supported formats from the dropdown menu;
* **Spacial reference system** - in addition to standard coordinate systems Longitude-Latitude (EPSG: 4326) and Mercator (EPSG: 3857) you can select custom coordinate systems created earlier (how to add custom SRS see [this page](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html)). Note that KML, KMZ and GPX formats can only be exported in EPSG: 4326;
* **Encoding** - UTF-8, Windows-1251, or Windows-1252;
* **FID field** is used for setting a field name to be added to a exported data where the object identifiers will be placed (the default is “ngw_id”).;
* You can choose to **Use field display names instead of keynames** Keynames are technical and use only plain Latin symbols. Display names can be in any language, usually they are seen as column headers or field labels in a form (for more details see [this section](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#ngw-attributes-edit)).;
* **Fields** - By default, all are selected. To remove a field, click on the cross by its name or untick it in the drop-down menu. To add a field again, tick it in the drop-down menu;

Watch on [youtube](https://youtu.be/Hukt3lD-JyQ?si=c8Cbut245FWU7LMQ).
* Limit by extent - If you need to export only the features within a particular area. The extent is set in degrees;
* Filter text - only export features containing a certain key word. Search is performed in all fields that don’t have [text search](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#edit-vector-layer-attributes-table) disabled, just like in the feature table;
* Filter - here you can set up more complicated conditions ([more on filters](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#search-and-filter));
* If you need to have the file archived, select *ZIP archive*. Output in ESRI Shapefile or MapInfo TAB results in a Zip archive with necessary files. For single-file formats (like GeoJSON or CSV) creation of Zip archive is optional.
All export options are available through HTTP API.
For example, this query will get you data in CSV format, EPSG:4326, UTF-8 encoding, zipped:
[https://demo.nextgis.com/api/resource/4077/export?format=csv&srs=4326&zipped=true&fid=ngw_id&encoding=UTF-8](https://demo.nextgis.com/api/resource/4077/export?format=csv&srs=4326&zipped=true&fid=ngw_id&encoding=UTF-8)
You can also export data from Vector layers using [feature table on the Web Map](https://docs.nextgis.com/docs_ngweb/source/feature_table.html) or [with desktop app NextGIS QGIS](https://docs.nextgis.com/docs_ngconnect/source/export.html).
## Interface for guests
User who is not logged in can view resources and resource groups allowed by [permissions set for Guests](https://docs.nextgis.com/docs_ngcom/source/permissions.html).
On the right there is **Sign in** button. Click on it to [log into the system](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#authorization).
To open the main menu, click  in the top right corner. Tree options are available for guests:
* Resource - redirects to the main resource group;
* Help - link to the [web site page](https://nextgis.com/help/) containing information about technical support, documentation etc.;
* Contact Web GIS administrator - redirects to the account page (you have to log in with your [NextGIS ID](https://docs.nextgis.com/docs_ngcom/source/create.html) or create an account). Here you can fill the message form:

The Web GIS administrator will receive your message and email address so that they can reply by email.
# admin_tasks.html.md
#### IMPORTANT
Section moved!
* [Language change](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-change-lang)
* [Resource search](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-search-bar)
* [Favorites](https://docs.nextgis.com/docs_ngweb/source/favorites.html)
* [User activity log](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#ngw-audit)
* [Create new user group]("https://docs.nextgis.com/docs_ngweb/source/users.html#ngw-create-group)
* [Global permissions](https://docs.nextgis.com/docs_ngweb/source/users.html#global-permissions)
* [Create new user](https://docs.nextgis.com/docs_ngweb/source/users.html#ngw-create-user)
* [Disable or delete users](https://docs.nextgis.com/docs_ngweb/source/users.html#ngw-disable-delete-user)
* [Update user password](https://docs.nextgis.com/docs_ngweb/source/users.html#ngw-change-password)
* [Storage](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#ngw-storage)
* [Backups](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#ngw-backups)
* [System information](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#ngw-system-info)
* [Hide resource export](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-res-export)
* [Web Map Settings](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html)
* [Font management](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-fonts)
* [Customize the design with CSS](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-css)
* [Custom CSS examples](https://docs.nextgis.com/docs_ngweb/source/look.html#custom-css-examples)
* [Customize UI Elements (White label)](https://docs.nextgis.com/docs_ngweb/source/label.html)
# adv_tools.html.md
# Advanced tools
## How to share backup
In NextGIS Collector app allows you can share the collected data as a zip file.
Press three dots in the top right corner and select “Backup data” in the drop-down menu.
> 
In the opened dialog you can select which layers to include in the backup.
> 
Next step is to select the app to send the backup or save it to a cloud or to your device.
> 
After that the device will redirect you to the chosen app to compete the action.
## Logging
NextGIS Collector app allows you to record your activities and technical data in a log.
Tap three dots in the top right corner and select “Settings” in the drop-down menu.
> 
In Settings tick “Extended logs”.
> 
You can also share your log. Open the menu from the top panel and tap “Share log”.
> 
Next step is to select the app to send the log or save it to a cloud or to your device.
### How to get useful logs
1. Turn on logging.
2. Repeat your actions until the issue arises again.
3. Send the logs to support.
4. Turn off logging.
## Simulation of location data
Third party software can be used as a source of location data for your device
Turn on Developer mode on your smart phone, select mock location app in developer settings and start simulation. For more details see [NextGIS Mobile documentation](https://docs.nextgis.com/docs_ngmobile/source/mock_location.html).
# aggregate_raster_layer_to_h3.html.md
# Aggregate raster layer to H3 grid
Creates an H3 grid covering the raster layer extent and aggregates raster values into its cells.
Inputs:
* Input raster layer. GDAL-compatible raster dataset;
* Minimal H3 Zoom (H3 zoom levels are valid in range 0-15);
* Maximal H3 Zoom (H3 zoom levels are valid in range 0-15);
* Band number - raster band to aggregate values from (leave empty to use band 1);
* Pixel spatial handling mode:
- PIXEL_CENTER (PIXEL_CENTER) - include pixels whose centers fall inside the H3 cell;
- INTERSECTS (INTERSECTS) - include every pixel touched by the H3 cell;
* Aggregation method. How to statistically aggregate values:
- Create grid only (EMPTY)
- Count (COUNT)
- Sum (SUM)
- Mean (MEAN)
- Median (MEDIAN)
- Min (MIN)
- Max (MAX)
- Mode (MODE)
* Output field name;
* Split zoom levels. If checked, each H3 zoom level cells will be saved in separate layer.
Outputs:
* None
Launch the tool: [https://toolbox.nextgis.com/t/aggregate_raster_layer_to_h3](https://toolbox.nextgis.com/t/aggregate_raster_layer_to_h3)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# aggregate_vector_layer_to_h3.html.md
# Aggregate vector layer to H3 grid
Creates an H3 grid covering the vector layer extent and aggregates vector features and attribute values into its cells.
Inputs:
* Input vector layer. GDAL-compatible vector dataset;
* Minimal H3 Zoom (H3 zoom levels are valid in range 0-15);
* Maximal H3 Zoom (H3 zoom levels are valid in range 0-15);
* Aggregation attribute - numeric attribute used for aggregation. Not required for grid creation, feature count or geometry sum;
* Feature spatial handling mode, select one from the list:
- Fully inside (FULLY_INSIDE) - include only features completely inside an H3 cell.
- Intersects (INTERSECTS) - include every feature intersecting an H3 cell.
- Split by H3 grid (SPLIT) - split line or polygon features by the H3 grid and distribute attribute values proportionally to fragment length or area where applicable;
* Aggregation method. How to aggregate vector features or attribute values:
- Create grid only (EMPTY)
- Count features (COUNT)
- Sum length or area (GEOMETRY_SUM)
- Sum (SUM)
- Mean (MEAN)
- Median (MEDIAN)
- Min (MIN)
- Max (MAX)
* Output field name - name of the output aggregation field. If empty, `aggregated_value` is used;
* Split zoom levels - if checked, cells of each H3 zoom level will be saved to a separate layer.
Outputs:
* GeoPackage containing H3 grid.
Launch the tool: [https://toolbox.nextgis.com/t/aggregate_vector_layer_to_h3](https://toolbox.nextgis.com/t/aggregate_vector_layer_to_h3)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# ai2geo.html.md
# Adobe Illustrator (\*.ai) to geodata
Launch the tool: [https://toolbox.nextgis.com/t/ai2geo](https://toolbox.nextgis.com/t/ai2geo)
The tool extracts vector layers from an Adobe Illustrator (\*.ai) file. An additional raster file could be used for georeference.
Inputs:
* Adobe Illustrator file (with the .ai extension) which contains vector features.
* Raster file for georeferencing - GeoTIFF file (with the .geotiff or .tif extension) or ZIP-archive with PNG + PGW (world-file). Same files should be used as a base layer in AI file. This is an optional field, if you leave it blank, vector layers will be in a relative coordinate system.
Output:
* ZIP-archive with a set of ESRI Shapefile files.
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# analytics.html.md
# Metrics and analytics
#### NOTE
This functionality is only available for [Premium](https://nextgis.com/pricing-base/) subscription plan.
In this section of the Control panel you can add tracking code to your Web GIS. Measurement code will be added to each page to help track user activity.

To add new measurement code, press **Add**, select a service you’d like to enable and enter your measurement ID in the opened tab.

# android_demos.html.md
# SDK demo projects
## Simple map with points
In this project created mobile application with one fullscreen map. Map consists of two layers:
* OpenStreetMap base map
* Vector layer with few points
The application screenshot is below.

The demo project [github page](https://github.com/nextgis/android.mobile.demo).
# annotation.html.md
# Web Map annotations
## Annotation. What is it?
Annotations are text messages attached to the points, which you can create and display on any [Web Map](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html). You can create your own set of annotations for each Web Map.
Annotation consists of a point and a message attached to this point.

The main aim of annotations is to specify user’s data by placing temporary messages on a Web Map.

At the same time, you can use annotations as a simple tool to create point data with text attributes attached to the Web Map.

#### NOTE
In contrast to a full vector layer, annotation tool does not allow to export data, search for it etc. Therefore, we recommend using [vector layers](https://docs.nextgis.com/docs_ngweb/source/layers.html#empty-vector-layer) to create the bulk of the data.
## How to enable Web Map annotations?
You can enable creation of annotations and set the display options in the Settings tab of the “Create resource” or “Update resource” windows for the Web Map (see [Update resource](edit_resource.md#ngw-update-resource)). By default the annotation tool is inactive.

The options are:
- *Hide by default* - annotations are hidden;
- *Show without messages* - the annotation symbols are visible on the Web Map when it opens;
- *Show with messages* - both symbols and text are shown on the Web Map.
## Web Map: Annotations panel
If the *“Enable annotations”* option is active, the “Annotations” panel appears on the Web Map:

“Annotations” panel consists of several options:
**Show annotations** - allows to show or hide symbols and messages of annotations.
**Edit annotations** - activate or inactivate annotation edit mode.
**Private annotations** - select what types of annotations are displayed. The types are color-coded:
- **Public annotations** - marked green. Visible for everyone, even unlogged users.
- **My private annotations** - marked purple. Visible for the creater and authorized users, including the administrator
- **Other private annotations** - marked red. Private annotations added by other users of the WebGIS

## Web Map: annotation editting
You can create and edit annotations, if the option *Edit annotations* on the *“Annotations” panel* is active. When it is active, the mouse pointer has a blue point next to it and a pencil pictogram appears above existing annotations:

To **create** an annotation you need to click the left mouse button on the Web Map. For a point symbol, only click once. To finish creating a line or a polygon, double click on the last point (polygon will be automatically completed).
Then a dialog window of annotation creation will be opened:

Dialog of annotation creation consists of:
- **Editor of annotation message** - [WYSIWYG](https://en.wikipedia.org/wiki/WYSIWYG) editor of the annotation text message.
- **Stroke: width / color** - width and color of the annotation point stroke.
- **Fill color** - color of the annotation point.
- **Circle size, px** - size (diameter) of the annotation point in pixels.
After clicking **Save**, a drop-down menu appears. In it you need to select the type for your annotation - public or private. After you do so, the newly created annotation will appear on the Web Map.
To **edit** annotations you need to activate annotation edit mode, point to an annotation and click the pictogram on it with the left mouse button. The dialog window for annotation editting looks like a dialog window of annotation creation, but has a **“Delete”** button, which allows to delete the chosen annotation. In order to change the font size of the message or its part, you need to select the text first.
You can edit both your own private annotations and those created by other users if you have the necessary permissions. The type of the annotation is marked at the top of the edit window. For private annotations of other users you will see the creator’s name in brackets.
## Web Map: user’s permissions associated with annotations
To further manage the work with annotations you can use access permissions (you can read more about [setting permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html#types-of-rules-what-can-be-allowed-or-denied)).
By default only the Administrator can view the Annotations panel and manage annotations.
There are three permissions associated with annotations that you can use to allow other users to work with annotations.
You can set one of them (view), two (view+draw) or all three (view+draw+manage), only in these combinations. So, for example, if “Draw” permission is set without “view” permission, it will not work.
1. **Web Map: View annotations** - “Annotations” panel is active. Public annotations are visible.
2. **Web Map: Draw annotations** - “Edit annotations” option on the “Annotations” panel is active. User can create public and private annotations.
3. **Web Map: Manage annotations** - User can view and edit private annotations created by other users.
# api.html.md
# NextGIS QMS Service API
## API Root
### GET /api/v1/
**Example request**:
```http
GET /api/v1/ HTTP/1.1
Host: qms.nextgis.com
Accept: */*
```
**Example response**:
```json
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"geoservices_url": "https://qms.nextgis.com/api/v1/geoservices/",
"geoservices_type_filter_url": "https://qms.nextgis.com/api/v1/geoservices/?type={tms|wms|wfs|geojson}",
"geoservices_epsg_filter_url": "https://qms.nextgis.com/api/v1/geoservices/?epsg={any_epsg_code}",
"geoservices_status_filter_url": "https://qms.nextgis.com/api/v1/geoservices/?cumulative_status={works|problematic|failed}",
"geoservices_search_url": "https://qms.nextgis.com/api/v1/geoservices/?search={q}",
"geoservices_intersects_extent_url": "https://qms.nextgis.com/api/v1/geoservices/?intersects_extent={WKT|EWKT geometry}",
"geoservices_intersects_boundary_url": "https://qms.nextgis.com/api/v1/geoservices/?intersects_boundary={WKT|EWKT geometry}",
"geoservices_ordering_url": "https://qms.nextgis.com/api/v1/geoservices/?ordering={name|-name|id|-id|created_at|-created_at|updated_at|-updated_at",
"geoservices_pagination_url": "https://qms.nextgis.com/api/v1/geoservices/?limit={int}&offset={int}",
"geoservice_detail_url": "https://qms.nextgis.com/api/v1/geoservices/{id}/",
"geoservice_status_url": "https://qms.nextgis.com/api/v1/geoservice_status/",
"geoservice_status_detail_url": "https://qms.nextgis.com/api/v1/geoservice_status/{id}/",
"geoservice_status_service_filter_url": "https://qms.nextgis.com/api/v1/geoservice_status/?geoservice={id}",
"geoservice_status_cumulative_status_filter_url": "https://qms.nextgis.com/api/v1/geoservice_status/?cumulative_status={works|problematic|failed}",
"geoservice_status_check_at_ordering_url": "https://qms.nextgis.com/api/v1/geoservice_status/?ordering={check_at|-check_at}",
"icons_url": "https://qms.nextgis.com/api/v1/icons/",
"icons_search_url": "https://qms.nextgis.com/api/v1/icons/?search={q}",
"icons_pagination_url": "https://qms.nextgis.com/api/v1/icons/?limit={int}&offset={int}",
"icon_detail_url": "https://qms.nextgis.com/api/v1/icons/{id}/",
"icon_content_url": "https://qms.nextgis.com/api/v1/icons/{id}/content",
"icon_resized_content_url": "https://qms.nextgis.com/api/v1/icons/{id}/content?width={16<=x<=64}&height={16<=y<=64}",
"default_icon_url": "https://qms.nextgis.com/api/v1/icons/default"
}
```
## Geo Service List
### GET /api/v1/geoservices/
**Example request**:
```http
GET /api/v1/geoservices/ HTTP/1.1
Host: qms.nextgis.com
Accept: */*
```
**Example response**:
```json
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"id": 98,
"guid": "fd15d9a6-1ff9-4af6-a60f-6e88e8a309e3",
"name": "OSM Mapnik",
"desc": "Моя любимая подложка!",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-01-10T12:11:11.131241Z",
"updated_at": "2018-03-10T14:57:08.274807Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((-123.2465499999999992 48.4077100000000016, -122.7308799999999991 48.4077100000000016, -122.7308799999999991 48.7430999999999983, -123.2465499999999992 48.7430999999999983, -123.2465499999999992 48.4077100000000016))"
},
{
"id": 88,
"guid": "6db548c3-9d5c-4ad8-abeb-13cd9466849c",
"name": "Landsat (Gis-Lab.info)",
"desc": null,
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-04-15T13:31:31.727508Z",
"updated_at": "2017-04-15T13:31:31.727508Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((-123.2465499999999992 48.4077100000000016, -122.7308799999999991 48.4077100000000016, -122.7308799999999991 48.7430999999999983, -123.2465499999999992 48.7430999999999983, -123.2465499999999992 48.4077100000000016))"
},
{
"id": 89,
"guid": "b3b58d17-df8a-44b0-9804-0a2093fed157",
"name": "OSM Veloroad",
"desc": null,
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-01-10T11:28:36.546992Z",
"updated_at": "2017-01-10T11:28:36.546992Z",
"cumulative_status": "failed",
"extent": null
},
{
"id": 174,
"guid": "48f1a563-cd12-4852-b1bf-1008e23002d0",
"name": "Dark Matter",
"desc": null,
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": null,
"created_at": "2016-11-14T18:08:04.486371Z",
"updated_at": "2016-11-14T18:08:04.486371Z",
"cumulative_status": "problematic",
"extent": null
}
]
```
## Geo Service filtered list
### GET /api/v1/geoservices/?type={tms|wms|wfs|geojson}&epsg={any_epsg_code}&limit={int}&offset={int}
**Example request**:
```http
GET /api/v1/geoservices/?type=tms&epsg=3857&limit=15&offset=0 HTTP/1.1
Host: qms.nextgis.com
Accept: */*
```
**Example response**:
```json
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"count": 617,
"next": "https://qms.nextgis.com/api/v1/geoservices/?epsg=3857&limit=15&offset=15&type=tms",
"previous": null,
"results": [
{
"id": 979,
"guid": "086150f6-ea8e-4326-a69b-8b7a19dc3f0e",
"name": "2013 aerial imagery for San Juan County WA",
"desc": "This service is imported from OSMLab. OSMLab id: sjcgis.org-Aerials_2013_WM. Country: United States",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-01-10T12:11:11.131241Z",
"updated_at": "2018-03-10T14:57:08.274807Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((-123.2465499999999992 48.4077100000000016, -122.7308799999999991 48.4077100000000016, -122.7308799999999991 48.7430999999999983, -123.2465499999999992 48.7430999999999983, -123.2465499999999992 48.4077100000000016))"
},
{
"id": 1157,
"guid": "4fb9effb-a33e-4e14-9e9b-2dd138f327d4",
"name": "2016 aerial imagery for San Juan County WA",
"desc": "This service is imported from OSMLab. OSMLab id: sjcgis.org-Aerials_2016_WM. Country: United States",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-04-15T13:31:31.727508Z",
"updated_at": "2017-04-15T13:31:31.727508Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((-123.2465499999999992 48.4077100000000016, -122.7308799999999991 48.4077100000000016, -122.7308799999999991 48.7430999999999983, -123.2465499999999992 48.7430999999999983, -123.2465499999999992 48.4077100000000016))"
},
{
"id": 576,
"guid": "05c3609c-1aec-4133-9097-8b09ef4691a6",
"name": "4UMaps",
"desc": "Tiles copyrights: 4UMaps, http://www.4umaps.eu",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": null,
"created_at": "2016-11-14T18:08:04.486371Z",
"updated_at": "2016-11-14T18:08:04.486371Z",
"cumulative_status": "problematic",
"extent": null
},
{
"id": 1395,
"guid": "add42680-4456-446c-abbb-4b7cc30ded10",
"name": "5 stories buildings in Moscow",
"desc": "5 stories buildings in Moscow. Experiment with TMS link from nextgis.com",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-09-06T05:58:08.381078Z",
"updated_at": "2017-09-06T05:58:08.382104Z",
"cumulative_status": "works",
"extent": null
},
{
"id": 810,
"guid": "012d7f79-8d97-4a2a-b4b2-819d69ef1ada",
"name": "7th Series (OS7)",
"desc": "This service is imported from OSMLab. OSMLab id: OS7. Country: United Kingdom",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-01-10T07:18:09.939512Z",
"updated_at": "2017-01-10T07:18:09.939512Z",
"cumulative_status": "problematic",
"extent": "SRID=4326;POLYGON ((-5.9260700000000002 54.8163300000000007, -2.7949700000000002 54.8163300000000007, -2.7949700000000002 56.8617500000000007, -5.9260700000000002 56.8617500000000007, -5.9260700000000002 54.8163300000000007))"
},
{
"id": 917,
"guid": "a691b422-cdfe-41b8-aac6-13e60392bd9c",
"name": "AGIV Flanders most recent aerial imagery",
"desc": "This service is imported from OSMLab. OSMLab id: AGIV. Country: Belgium",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2017-01-10T10:28:08.238619Z",
"updated_at": "2018-05-19T14:14:21.963058Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((2.5331800000000002 50.6820000000000022, 5.9203999999999999 50.6820000000000022, 5.9203999999999999 51.5109899999999996, 2.5331800000000002 51.5109899999999996, 2.5331800000000002 50.6820000000000022))"
},
{
"id": 649,
"guid": "7eea7b32-920c-4b13-a38d-77ad25c728db",
"name": "AGRI black-and-white 2.5m",
"desc": "This service is imported from OSMLab. OSMLab id: AGRI-black_and_white-2.5m",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "7e7630e3-76c6-4e57-9116-dcfd4b72a05e",
"created_at": "2016-12-06T15:21:07.105613Z",
"updated_at": "2016-12-06T15:21:07.105613Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((112.2877799999999979 -44.0601300000000009, 156.6276100000000042 -44.0601300000000009, 156.6276100000000042 -9.9924099999999996, 112.2877799999999979 -9.9924099999999996, 112.2877799999999979 -44.0601300000000009))"
},
{
"id": 575,
"guid": "ba32909f-0b51-42f9-83e8-7bd078f77633",
"name": "Alberding (sorbian)",
"desc": "",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": null,
"created_at": "2016-11-14T18:08:04.486371Z",
"updated_at": "2016-11-14T18:08:04.486371Z",
"cumulative_status": "failed",
"extent": null
},
{
"id": 634,
"guid": "467325dd-bb3b-4a01-b9bf-d9dab0560d85",
"name": "Apple iPhoto",
"desc": "",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "349a7b2a-3795-43f7-96f9-da0615ff23c3",
"created_at": "2016-11-25T12:17:37.393522Z",
"updated_at": "2016-11-25T12:17:37.393522Z",
"cumulative_status": "problematic",
"extent": null
},
{
"id": 2336,
"guid": "bbf3aa67-eace-4735-837e-799a95e3f0b8",
"name": "Architecture guide by trolleway",
"desc": "",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "7e7630e3-76c6-4e57-9116-dcfd4b72a05e",
"created_at": "2018-08-15T10:34:02.188501Z",
"updated_at": "2018-08-15T10:39:14.466196Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((19.6008225487717525 54.5197084565585897, 60.7214426877434406 54.5197084565585897, 60.7214426877434406 60.7951778499222044, 19.6008225487717525 60.7951778499222044, 19.6008225487717525 54.5197084565585897))"
},
{
"id": 1233,
"guid": "23769bbc-8003-4d4e-8471-f5a435e48af9",
"name": "Art Noveau architecture Riga",
"desc": "Scan from \"Art Noveau architecture Riga\" book, 2008",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "7e7630e3-76c6-4e57-9116-dcfd4b72a05e",
"created_at": "2017-05-22T18:41:45.703437Z",
"updated_at": "2017-05-22T18:41:45.703437Z",
"cumulative_status": "works",
"extent": null
},
{
"id": 2292,
"guid": "43513f89-1ccb-40a6-8e32-f2824c6f3113",
"name": "ASTER Global Digital Elevation Model (GDEM) Color Shaded Relief",
"desc": "",
"type": "tms",
"epsg": 3857,
"icon": 71,
"submitter": "4b55ea1e-7df2-4a7c-ba16-78df93931966",
"created_at": "2018-07-11T18:02:28.316635Z",
"updated_at": "2018-07-11T18:02:28.667033Z",
"cumulative_status": "problematic",
"extent": null
},
{
"id": 638,
"guid": "d4623dfc-ab59-46c4-8647-2f1e1ef0443b",
"name": "Australia - New South Wales - Topographic",
"desc": "Cached Map Service of NSW showing roads, points of interest, localities, landform, drainage, cultural data, parks & forests, property boundaries and street address numbers. Metadata_link http://sdi.nsw.gov.au/catalog/search/resource/details.page?uuid=%7B7DF76070-8307-49A2-A381-3D9686EAFDDC%7D",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "d06765ea-95dd-497d-8963-42ff5affa4fe",
"created_at": "2016-11-25T20:00:37.885603Z",
"updated_at": "2016-11-25T20:00:37.885603Z",
"cumulative_status": "works",
"extent": "SRID=4326;POLYGON ((140.9948644000000115 -37.8474136999999970, 159.4938303000000133 -37.8474136999999970, 159.4938303000000133 -27.6936059999999991, 140.9948644000000115 -27.6936059999999991, 140.9948644000000115 -37.8474136999999970))"
},
{
"id": 637,
"guid": "10df7a62-a447-4eb5-bbf4-040360d09b04",
"name": "Australia - Tasmania LIST Orthophoto",
"desc": "Tasmania State Orthophoto compilation. Coverage compiled from latest aerial photos sourced from DPIPWE, Southern Councils, and individual projects. The resolution of the raster capture varies, with many urban areas at a higher resolution.For Services Terms and Conditions, please see the LIST Web Services Terms and Conditions (http://listdata.thelist.tas.gov.au/public/LISTWebServicesTermsConditions.pdf)",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "d06765ea-95dd-497d-8963-42ff5affa4fe",
"created_at": "2016-11-25T19:54:24.700639Z",
"updated_at": "2016-11-25T19:54:24.700639Z",
"cumulative_status": "works",
"extent": null
},
{
"id": 636,
"guid": "24f06d38-64ad-4467-b80d-82ad5cfc1cd1",
"name": "Australia - Tasmania LIST Topographic",
"desc": "Tasmania Topographic base map. Different map scales used to represent the map. Created from vector data.For Services Terms and Conditions, please see the LIST Web Services Terms and Conditions (http://listdata.thelist.tas.gov.au/public/LISTWebServicesTermsConditions.pdf)",
"type": "tms",
"epsg": 3857,
"icon": null,
"submitter": "d06765ea-95dd-497d-8963-42ff5affa4fe",
"created_at": "2016-11-25T19:47:57.742223Z",
"updated_at": "2016-11-25T19:47:57.742223Z",
"cumulative_status": "works",
"extent": null
}
]
}
```
## Geo Service Details
### GET /api/v1/geoservices/{int:id}/
**Example request**:
```http
GET /api/v1/geoservices/465/ HTTP/1.1
Host: qms.nextgis.com
Accept: */*
```
**Example response**:
```json
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"id": 465,
"cumulative_status": "works",
"url": "http://maps.kosmosnimki.ru/TileService.ashx?Request=gettile&LayerName=04C9E7CE82C34172910ACDBF8F1DF49A&apikey=U96GP973UH&crs=epsg:3857&z={z}&x={x}&y={y}",
"alt_urls": [],
"origin_url": "http://maps.kosmosnimki.ru/TileService.ashx?Request=gettile&LayerName=04C9E7CE82C34172910ACDBF8F1DF49A&apikey=U96GP973UH&crs=epsg:3857&z={z}&x={x}&y={y}",
"guid": "cd71471d-4899-4e95-b2e5-5c7e8dd55fce",
"name": "Kosmosnimki.ru Satellite",
"desc": "",
"type": "tms",
"epsg": 3857,
"license_name": "",
"license_url": "",
"copyright_text": "",
"copyright_url": "",
"terms_of_use_url": "",
"created_at": "2016-11-14T18:08:04.486371Z",
"updated_at": "2016-11-14T18:08:04.486371Z",
"source": null,
"source_url": null,
"extent": null,
"boundary": null,
"boundary_area": null,
"z_min": null,
"z_max": 19,
"y_origin_top": true,
"icon": 77,
"submitter": null,
"last_status": 442280
}
```
## Geo Service Icon
### GET /api/v1/icons/{int:id}/content
**Example request**:
```http
GET /api/v1/icons/77/content HTTP/1.1
Host: qms.nextgis.com
Accept: */*
```
In response service returns icon image.
# apitype.html.md
# Describing API
NextGIS Web incorporates type-annotated views and routes to:
- Ensure input data is valid
- Convert data into Python objects
- Create OpenAPI 3.1.0 schema
This approach heavily relies on Annotated type hints and the [MsgSpec library](https://jcristharif.com/msgspec/).
Currently, it supports a specific set of types, with plans to potentially add
more in the future, without attempting to accommodate every possible use case.
Similar to the Pyramid framework, the handling of views is determined by their
signatures. The established conventions for these view signatures are:
- An argument named `request` is required at the first or second position
- If the `request` argument is the second, the first is a request context
- A request context argument can use any name, like `resource` or `obj`
- An argument named `body` or `json_body` represents decoded request body
- Keyword-only arguments (after `*`) represent query parameters
- The remaining arguments are treated as path parameters
## Path parameters
Supported types: string (`str`) and integers (`int`) only. Behind the
scenes, values are decoded using MsgSpec, thus `msgspec.Meta` constraints
work.
```python
from typing import Annotated
from msgspec import Meta
def path_param(request, param: Annotated[int, Meta(gt=0)]):
...
def setup_pyramid(comp, config):
config.add_route(
"path_param",
"/path/{param}",
types=dict(param=int),
get=path_param,
)
```
In the example above, both `/path/1` and `/path/0` will match the route, but
for `/path/0` the `422 Unprocessable Entity` error will be returned as it
doesn’t fit `param > 0` condition.
## Query parameters
Supported types:
- Primitives:
: - Basic types: `str`, `int`, `bool`, `float`
- `enum.Enum` with string values only
- `typing.Literal` with string and integer values
- `datetime.datetime` and `datetime.date` types
- Sequences of primitive types:
: - `list` and `typing.List` for variable-length uniform lists
- `tuple` and `typing.Tuple` for fixed-length non-uniform and uniform tuples
- Objects:
: - `msgspec.Struct`
- `dict` and `typing.Dict`
```python
from msgspec import Struct
class SomeStruct(Struct, kw_only=True):
foo: str
bar: str = "qux"
def query_param(
request,
*,
txt: str,
num: int = 0,
flag: bool = False,
list_str: list[str],
list_int: list[int] = [1, 2, 3],
tuple_mixed: tuple[str, int],
tuple_uniform: tuple[float, ...],
struct: SomeStruct,
dict_str_int: dict[str, int],
dict_list: dict[str, list[int]],
):
...
```
Arguments of primitive types can accept a default value. For booleans `true`
and `false` values should be used, but `yes` and `no` are also accepted.
In case of multiple values of the same parameter (`...&num=1&num=2&...`), the
last value is decoded (`num == 2`).
List values are decoded using the `form` style array encoding with as
comma-separated values. Urlencoded commas are decoded as a part of values, plain
commas as list separators. An empty string value (`...&arr_str=&...`) is
decoded as an empty list.
Structs are decoded using the `form` style object encoding which means that
every struct field becomes an URL parameter (`...&foo=some&bar=other&...`).
This fact can help to reuse a Struct for a group of parameters without
repeating. Default values aren’t allowed for structs, fields with no default
value are required parameters.
Dictionaries are decoded using the `deepObject` style encoding as their
possible keys are unknown (`...&obj_dict[a]=1&obj_dict[b]=2&...`). Default
values aren’t allowed for dictionaries.
## Request body
For request bodies `msgspec.Struct` types should be used in most cases. Refer
to MsgSpec documentation for details, here is the minimal example:
```python
from msgspec import Struct
class SomeStruct(Struct, kw_only=True):
foo: str
bar: str = "qux"
def body(request, body: SomeStruct):
...
```
## Response
View results are encoded using MsgSpec JSON encoder depending on return
annotation in the following cases:
- Declared as `msgspec.Struct`
- Wrapped into the `AsJSON` helper
These options support OpenAPI schema generation and static type checking, here
is the examples:
```python
from msgspec import Struct
from nextgisweb.lib.apitype import AsJSON
from nextgisweb.pyramid import viewargs
class SomeStruct(Struct, kw_only=True):
foo: str
bar: str = "qux"
def struct(request) -> SomeStruct:
return SomeStruct(foo="zoo")
def helper(request) -> AsJSON[int]:
return 1
```
The `StatusCode` annotation can be used to declare non-200 status codes. It’s
important to note that this annotation only modifies the OpenAPI schema. To set
the actual response status code, you should use
`request.response.status_code`:
```python
from typing import Annotated
from msgspec import Struct
from nextgisweb.lib.apitype import StatusCode
class SomeStruct(Struct, kw_only=True):
foo: str
def create(request) -> Annotated[SomeStruct, StatusCode(201)]:
request.response.status_code = 201
return SomeStruct(foo="zoo")
```
If there is no idea which JSON value to return as nothing, like `DELETE`
methods, `EmptyObject` can be used. It accepts `None` and converts it to
`{}`. An empty object is better than the `null` value due to future
extensibility.
```python
from nextgisweb.lib.apitype import EmptyObject
def void(request) -> EmptyObject:
pass
```
# appendix.html.md
# License GPL v.3
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <[http://fsf.org/](http://fsf.org/)>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
## Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program–to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and modification follow.
## TERMS AND CONDITIONS
## 0. Definitions.
“This License” refers to version 3 of the GNU General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based on the Program.
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
## 1. Source Code.
The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
## 2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
## 3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures.
## 4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
## 5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
1. The work must carry prominent notices stating that you modified it, and giving a relevant date.
2. The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
3. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
4. If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
## 6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
1. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
2. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
3. Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
4. Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
5. Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
## 7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
1. Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
2. Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
3. Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
4. Limiting the use for publicity purposes of names of licensors or authors of the material; or
5. Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
6. Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
## 8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
## 9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
## 10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
## 11. Patents.
A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”.
A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
## 12. No Surrender of Others’ Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
## 13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
## 14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
## 15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
## 16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
## 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
# appendix.html.md
# GNU General Public License, version 2
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
## Preamble
> The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
## TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
> 1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
1. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
> 1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
> 2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
> 3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
1. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
> 1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
> 2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
> 3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
1. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
2. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
3. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
4. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
1. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
2. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
1. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
## NO WARRANTY
1. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
2. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
# appendix.html.md
# GNU General Public License, version 2
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
## Preamble
> The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
## TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
> 1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
1. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
> 1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
> 2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
> 3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
1. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
> 1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
> 2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
> 3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
1. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
2. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
3. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
4. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
1. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
2. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
1. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
## NO WARRANTY
1. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
2. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
# arcgis.html.md
# How to open a map or a project in ArcGIS Pro
* [Order data](https://data.nextgis.com/en/catalog/subdivisions/?country=AU) for your area of interest in Shape (ArcGIS) or Geodatabase (ArcGIS) format.
* Download and install ArcGIS Pro, open it and create a folder for your data.

* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
Project includes all layers with preset styles.
* In the “Catalog” panel click “Project” → «Folders» → «MyProject». Open the folder containing the data and find MXD file.

* Right-click the MXD file and select «Import And Open».

Shortly the project will be imported to ArcGIS Pro and ready for work.

# arcgispro.html.md
# How to open your basemap project in ArcGIS Pro
* [Order data](https://data.nextgis.com/en/) for your area of interest in ESRI Geodatabase (ArcGIS Pro) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Launch ArcGIS Pro. On the start page, click **Open another project** and select an APRX file.

* Your project is opened in the program.

Another way to open a project is to double-click the \*.aprx file or select **Open** in the context menu.

# ascii2geotiff.html.md
# ASCII raster to GeoTIFF
Converts ASCII raster to GeoTIFF.
Input:
* ASCII file containing raster description.
Output:
* Raster in GeoTIFF format.
Launch the tool: [https://toolbox.nextgis.com/t/ascii2geotiff](https://toolbox.nextgis.com/t/ascii2geotiff)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# auth.html.md
# Authorization
## Via cloud server (my.nextgis.com)
For subscribed users, authorization in the NextGIS Collector application is carried out via [https://my.nextgis.com/](https://my.nextgis.com/) server by default.
The email and password from the cloud NextGIS ID are used as a login and password for app.

## Via on-premise (NGIDOP)
For authorization in NextGIS Collector via on-premise server, you must specify the appropriate Endpoint in the authorization settings (see [Fig. 1073.](#ngidop-collector)). If you’re already logged in with my.nextgis.com - log out first.

## Change user
To view the information of the user currently signed in the app, go to the Settings page.

To change the user, press “Sign out from NextGIS” and log in as described above.
# auth.html.md
# Authorization
To start working with the app user needs to log in.
Enter username and password in the corresponding fields.
Admin credentials for initial log-in are generated when the app is deployed.

Administrator can create local users within GeoServices (in Settings).

# auth.html.md
# Authorization
To log in to [NextGIS GeoServices](https://geoservices.nextgis.com/) use your [NextGIS ID](https://my.nextgis.com) ([Fig. 1138.](#nggeos-auth)) account.
If you don’t have one, register on [my.nextgis.com](https://my.nextgis.com/signup/).

# auth.html.md
# Authorization
## Via my.nextgis.com
If you are a “regular” user, here’s what you do to sign in:
1. Create an account at [https://my.nextgis.com](https://my.nextgis.com), confirm it.
2. In the app enter your e-mail or username and password set during registration.

## Via on-premise (NGIDOP)
If your company has NextGIS Web and NextGIS ID deployed on-premise, you need to change authorization server in the settings.
For authorization in NextGIS Mobile via on-premise, enter the appropriate NextGIS ID address in the authorization settings (Menu -> Settings -> Account -> Sign in -> Change authorization server) ([Fig. 942.](#ngm-ngidop-en)). Select “NextGIS ID from custom server” and enter the address.
If you’re already logged in with my.nextgis.com - log out first, select the correct server, then log in again.

# auth.html.md
# Authorization
Send the following POST request to get authorization cookie.
### POST /api/component/auth/login
Authorization request to NextGIS Web
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* **Request JSON Object:**
* **login** (*string*) – login
* **password** (*string*) – password
* **Response JSON Object:**
* **id** (*int*) – user identifier
* **keyname** (*string*) – user login
* **display_name** (*string*) – user full name
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
POST /api/component/auth/login
Host: ngw_url
Accept: */*
{
"login": "test_user",
"password":"secret"
}
```
**Example response**:
```json
{
"id": 10,
"keyname": "test_user",
"display_name": "Test user"
}
```
If authorization succeeds, NextGIS Web will return HTTP code 200 and Set-Cookie.
Requests with this cookie into the header will be considered authorized.
Authorized data (HTTP AUTH) can be sent with each request.
#### NOTE
When the user agent wants to send the server authentication credentials it
may use the Authorization header.
The Authorization header is constructed as follows:
> 1. Username and password are combined into a string “username:password”
> 2. The resulting string is then encoded using the RFC2045-MIME variant of Base64, except not limited to 76 char/line
> 3. The authorization method and a space i.e. “Basic “ is then put before the encoded string.
For example, if the user agent uses ‘Aladdin’ as the username and ‘open
sesame’ as the password then the header is formed as follows:
`Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==`
If you have configured an OAuth server, you can use OAuth user credentials in the same way as the local user or send Bearer token.
# Managing users
To create new user execute following request:
### POST /api/component/auth/user/
Request to create new user.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **display_name** (*string*) – user full name
* **keyname** (*string*) – user login
* **description** (*string*) – user description
* **password** (*string*) – user password
* **Response JSON Object:**
* **id** (*int*) – new user identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
POST /api/component/auth/user/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"display_name": "Test user",
"keyname": "test_user",
"password":"secret",
"disabled": false,
"member_of": [ 5 ]
}
```
**Example response**:
```json
{
"id": 10
}
```
Get information about existing user with `id` returned in previous request:
### GET /api/component/auth/user/(*int:* id)
**Example request**:
```http
GET /api/component/auth/user/10 HTTP/1.1
Host: ngw_url
Accept: */*
```
**Example response**:
```json
{
"id": 10,
"system": false,
"display_name": "Test user",
"description": null,
"keyname": "test_usera",
"superuser": false,
"disabled": false,
"last_activity": null,
"oauth_subject": null,
"oauth_tstamp": null,
"member_of": [ 5 ]
}
```
Update user details:
```http
PUT /api/component/auth/user/10
{
"display_name": "Dear test user",
"disabled": true
}
```
Get information about all local users in WebGIS (some output was clipped):
```http
GET /api/component/auth/user/
[
// ...
{
"id": 4,
"system": false,
"display_name": "Administrator",
"description": null,
"keyname": "administrator",
"superuser": false,
"disabled": false,
"last_activity": "2020-08-07T01:27:52.870601",
"oauth_subject": null,
"oauth_tstamp": null,
"member_of": [ 5 ]
},
{
"id": 6,
"system": true,
"display_name": "Owner",
"description": null,
"keyname": "owner",
"superuser": false,
"disabled": false,
"last_activity": null,
"oauth_subject": null,
"oauth_tstamp": null,
"member_of": []
},
// ...
{
"id": 10,
"system": false,
"display_name": "Dear test user",
"description": null,
"keyname": "test_usera",
"superuser": false,
"disabled": true,
"last_activity": null,
"oauth_subject": null,
"oauth_tstamp": null,
"member_of": [ 5 ]
}
]
```
Delete previously created user:
```http
DELETE /api/component/auth/user/10
```
To get current user details execute following request:
### GET /api/component/auth/current_user
Request to get current user details
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Response JSON Object:**
* **keyname** (*string*) – user login
* **display_name** (*string*) – user name
* **id** (*int*) – user identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example response**:
```json
{
"keyname": "administrator",
"display_name": "Admin",
"id": 4
}
```
# Managing groups
To create new group execute following request:
### POST /api/component/auth/group
Request to create new group
```http
POST /api/component/auth/group/
{
"display_name": "Test group",
"keyname": "test_group",
"members": [ 10 ]
}
```
Get information about existing group:
```http
GET /api/component/auth/group/20
{
"id": 20,
"system": false,
"display_name": "Test group",
"description": null,
"keyname": "test_group",
"register": false,
"members": [ 10 ]
}
```
Update group details and remove all members from it:
```http
PUT /api/component/auth/group/20
{
"display_name": "Empty group",
"members": []
}
```
Delete group:
```http
DELETE /api/component/auth/group/20
```
# Automatically creating users
To self creating user (anonymous user) execute following request:
### POST /api/component/auth/register
Request to create new user
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **display_name** (*string*) – user full name
* **keyname** (*string*) – user login
* **description** (*string*) – user description
* **password** (*string*) – user password
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
Administrator can configure anonymous user registration to the specific group
(via setting checkbox on group in administrative user interface).
This feature requires the special section in NGW config file:
```config
[auth]
register = true
```
# Get resource permissions
## Simple output
To get resource permissions execute following request. Returned json may vary
depends on resource type.
**The following request returns resource permissions**:
### GET /api/resource/(*int:* id)/permission
Permissions request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **id** – resource identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
GET /api/resource/56/permission HTTP/1.1
Host: ngw_url
Accept: */*
```
**Example response**:
```json
{
"resource": {
"read": true,
"create": true,
"update": true,
"delete": true,
"manage_children": true,
"change_permissions": true
},
"datastruct": {
"read": true,
"write": true
},
"data": {
"read": true,
"write": true
},
"metadata": {
"read": true,
"write": true
}
}
```
## Detailed output
To get explain how permissions were set execute following request. Returned
json may vary depends on resource type.
**The following request returns resource permissions explain**:
### GET /api/resource/(*int:* id)/permission/explain
Permissions explain request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **id** – resource identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
GET /api/resource/56/permission/explain HTTP/1.1
Host: ngw_url
Accept: */*
```
**Example response**:
```json
{
"resource": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 3880
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 4232
},
"type": "requirement",
"requirement": {
"scope": "resource",
"permission": "read",
"attr": "parent",
"attr_empty": true
},
"satisfied": true,
"explain": {
"resource": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 3880
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 3880
},
"type": "requirement",
"requirement": {
"scope": "resource",
"permission": "read",
"attr": "parent",
"attr_empty": true
},
"satisfied": true,
"explain": {
"resource": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 3880
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 0
},
"type": "requirement",
"requirement": {
"scope": "resource",
"permission": "read",
"attr": "parent",
"attr_empty": true
},
"satisfied": true,
"explain": {
"resource": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "resource",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": null,
"type": "requirement",
"requirement": {
"scope": "resource",
"permission": "read",
"attr": "parent",
"attr_empty": true
},
"satisfied": false,
"explain": null
}
]
}
}
}
}
]
}
}
}
}
]
}
}
}
}
]
},
"create": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
},
"update": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
},
"delete": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
},
"manage_children": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
},
"change_permissions": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
}
},
"datastruct": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "datastruct",
"permission": "read",
"identity": "",
"propagate": true
}
}
]
},
"write": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
}
},
"data": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "data",
"permission": "read",
"identity": "",
"propagate": true
}
},
{
"result": true,
"resource": {
"id": 4233
},
"type": "requirement",
"requirement": {
"scope": "connection",
"permission": "connect",
"attr": "connection",
"attr_empty": false
},
"satisfied": true,
"explain": {
"connection": {
"connect": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "connection",
"permission": "connect",
"identity": "",
"propagate": true
}
}
]
}
}
}
}
]
},
"write": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
}
},
"metadata": {
"read": {
"result": true,
"explain": [
{
"result": true,
"resource": {
"id": 0
},
"type": "acl_rule",
"acl_rule": {
"action": "allow",
"principal": {
"id": 2,
"cls": "user",
"keyname": "everyone"
},
"scope": "metadata",
"permission": "read",
"identity": "",
"propagate": true
}
}
]
},
"write": {
"result": false,
"explain": [
{
"result": false,
"resource": {
"id": 4234
},
"type": "default"
}
]
}
}
}
```
# auth.html.md
# Authorization
To start working with the app user needs to log in. Enter username and password in the corresponding fields.
Admin credentials for initial log-in are generated when the app is deployed.

Toolbox on-premise (Toolbox for short) are integrated with [NextGIS ID on-premise](https://docs.nextgis.com/docs_ngid/source/index.html) authentication service deployed by default with the software.
Users added to the [Team](https://docs.nextgis.com/docs_ngid/source/ngidop.html#ngidop-teams) also get access to Toolbox.
# autocad.html.md
# How to import data into AutoCAD
1. [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoJSON format.
2. Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
3. **Unpack** the archive.
4. Convert target layer or layers into [DXF](../../glossary.md#term-DXF) format. You can use QGIS to save th file as DXF. From the top menu open Layer –> Save as, then select AutoCAD DXF.

1. Launch AutoCAD, press “Open files” and choose layer in DXF format.

2. Layer is imported into AutoCAD working environment.

# autocad_file_schema.html.md
# Layer list from DWG file
This tool generates a CSV containing the list of layers from a DWG file with information on geometry and feature count.
Inputs:
* Source file in AutoCAD DWG formats
Outputs:
* CSV with layer list
Launch the tool: [https://toolbox.nextgis.com/t/autocad_file_schema](https://toolbox.nextgis.com/t/autocad_file_schema)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# autocad_version.html.md
# Report DWG / DXF file version
Outputs a version of a DWG / DXF file.
Inputs:
* Source file. Source file in AutoCAD DWG or DXF format
Outputs:
* Information about software version in text format.
Launch the tool: [https://toolbox.nextgis.com/t/autocad_version](https://toolbox.nextgis.com/t/autocad_version)
Example output:
```default
Magic: DWG AutoDesk AutoCAD 2007/2008/2009
MIME: image/vnd.dwg
DWG code: AC1021
DWG version: DWG 2007/2008/2009
```
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# backup_restore.html.md
# Backup and restore
NextGIS Web uses two data storages for different types of data:
- PostgreSQL database used as general purpose relational database.
- Filesystem storage used for storing BLOBs like raster, attachments, etc.
Also NextGIS Web provides tools for backup and restore this data to / from
single-file archive. You can use any destination directory but these tools
provide some defaults wich may be usefull.
So before we begin, let’s create default backup directory in `/srv/ngw`:
```none
$ mkdir backup
```
And set up backup directory in `config/config.ini`:
```ini
[core]
# Other config options go here
backup.path = /srv/ngw/backup
```
## Backup
To create a backup you need to run command `nextgisweb backup` and it will
create backup and print it’s filename:
```none
$ nextgisweb backup
/srv/ngw/backup/20200721-234619.ngwbackup
```
By default NextGIS Web uses [strftime](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) formatted for filename which is
`%Y%m%d-%H%M%S.ngwbackup`. In the example below 2020 is a year, 07 is a
month, 21 is a day and so on. Note that timestamps are always stored in UTC.
## Restore
Now try to restore NextGIS Web from previously created backup. You don’t need to
stop NextGIS Web service during backup but you need to stop it during restore.
If you used systemd in the previous section just run as root following command:
```none
# systemctl stop ngw.service
```
Then run `nextgisweb restore` command with filename argument:
```none
$ nextgisweb restore backup/20200721-234619.ngwbackup
```
If you are restoring backup which made from some previous version, it may
require to apply migrations. The process of applying migrations is described in
[“Backup and restore”](upgrade.md#applying-migrations) section. Follow instruction from
there, and then start NextGIS Web service again:
```none
# systemctl start ngw.service
```
# basemap_tiles.html.md
# Basemap services
#### IMPORTANT
To use the described functionality you need to be on [Premium plan](https://nextgis.com/nextgis-com/plans).
[NextGIS GeoServices](https://geoservices.nextgis.com/) allows adding vector and raster maps with GL styles:
1. Klokantech 3D
2. Klokantech Basic
3. Bright (nextgis)
4. OSM Bright (osm-bright)

#### NOTE
To use the data you’ll need a personal [API key](https://docs.nextgis.com/docs_geoservices/source/reissue_api_key.html) (by default the API key can be found in your profile in the query string, blurry in the image).
[Example](https://demo.nextgis.com/resource/5226) of adding a service as a [Basemap](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-map-basemaps) in NextGIS Web.
# blender.html.md
# How to upload data to Blender GIS
#### NOTE
It is assumed that the Blender GIS add-on is already installed and ready for working with spatial data.
* [Order data](https://data.nextgis.com/en/) for your area of interest in Shape format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Launch Blender, at the top left select “GIS” > “Import” > “SHP”.
* In the pop-up window find the target layer and press “Import” button.
* Another pop-up window emerges in the bottom right. Here you can adjust visualization parameters. To display individual objects, and not the outline of the layer as a whole, check the “Separate objects” checkbox. Check the “Object name from field” checkbox and specify the field to identify each object in the layer with. Click “OK”.

* Your map is uploaded. Attributive information of selected object is shown in the right panel.

# broken_encoding.html.md
# If text in attribute table is garbled

* It is recommended to ensure that your GIS doesn’t ignore layer encoding information. For [NextGIS QGIS](https://nextgis.com/nextgis-qgis/) it can be checked via “Settings” > “Options” > “Data Sources”. If the box with “Ignore shapefile encoding declaration” is checked, uncheck it.

* It can be also helpful to check, if encoding of problematic layer correspond to the initial encoding. Possible initial encodings are listed [here](https://data.nextgis.com/en/about/#formats) and depend on format of your ordered data. Encoding of the layer is shown in its “Properties” menu.

# buffer.html.md
# Buffer
Computes buffer areas for all features in an input layer using a fixed or attribute-based distance.
Inputs:
* Source file. Single file or ZIP with any OGR-compatible vector dataset.
* Buffer distance source. Where to take the buffer distance from:
- Value;
- Attribute;
* Buffer distance - buffer distance when Value is selected;
* Attribute name - numeric attribute containing buffer distances if Attribute is selected;
* Calculation CRS - coordinate reference system used for buffering:
- Source layer internal CRS (Internal);
- Optimal UTM Zone (UTM);
* Segments - number of segments used to approximate a quarter circle in rounded buffers;
* Merge overlaps - dissolve overlapping buffers. Disconnected dissolved parts are written as separate features;
* Output format - format of the output buffer dataset:
- GeoPackage (GPKG);
- GeoJSON (GeoJSON);
* Output CRS - coordinate reference system of the output file:
- Source layer internal CRS (Internal);
- WGS84 (EPSG:4326) (WGS84);
- Pseudo Mercator (EPSG:3857) (Pseudo Mercator);
- Optimal UTM Zone (UTM).
Outputs:
* GeoPackage file.
Launch the tool: [https://toolbox.nextgis.com/t/buffer](https://toolbox.nextgis.com/t/buffer)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# cadastre2img.html.md
# Generate an image of a cadastral parcel by number
A tool for generating an image of a cadastral parcel using its number from nspd.gov.ru.
Inputs:
* Cadastral number in `06:07:0400001:414` or `06:07:0400001` format.
* Object type. Available values are: 1 - parcels, 2 - units, 4 - area, 5 - buildings, 10 - restricted zones.
* Image width - width of the output image in pixels (default: 827).
* Image height - height of the output image in pixels (default: 583).
* Fill color. Accepts HTML color names or HEX format (e.g., `orange`, `#FFA500`). Default: red.
* Fill opacity for the object. Between 0 (transparent) and 1 (opaque), with decimal point, the default value is 0.6.
* Stroke color - color for the object outline. If not specified, the fill color is used. Accepts HTML color names or HEX format (e.g., `orange`, `#FFA500`).
* Stroke opacity. Between 0 (transparent) and 1 (opaque), with decimal point, the default value is 1.
* Stroke width in pixels, the default value is 1.
* QMS ID - ID of a basemap service in NextGIS QMS catalogue (QuickMapServices - [https://qms.nextgis.com](https://qms.nextgis.com)) to use for the map background. If not specified, defaults to OpenStreetMap. Example: `1300` – Satellite imagery, `519` – Topographic map.
Maximum zoom level used when fitting the layer (default: 18). Valid range: 0 (world view) to 22 (building-level detail).
\* Padding around the fitted layer in pixels (default: 5),
Output:
* PNG image.
Launch the tool: [https://toolbox.nextgis.com/t/cadastre2img](https://toolbox.nextgis.com/t/cadastre2img)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# cadnums_to_geodata.html.md
# Batch search by cadastral numbers
The tool creates a set of layers with the boundaries of cadastral objects, receiving as input a text file with a list of their numbers.
Input:
* Text file (\*.txt) containing numbers of items. One cadastral number per string. Max 100 numbers.
Output:
* Archive with geodata of cadastral objects
Launch the tool: [https://toolbox.nextgis.com/t/cadnums_to_geodata](https://toolbox.nextgis.com/t/cadnums_to_geodata)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# calc_area.html.md
# When area or distance differs from the expected value
To receive the values for distances or areas closest to on-site measurements, it is recommended to perform elipsoid-based calculation. It helps to avoid distortion which appears while using any projected data.
QGIS settings offer an easy way to perform correct calculations regardless of the initial coordinate system of the dataset.
* In Menu Toolbar select “Project” > “Project Properties…”.
* In the pop-up window switch to the “General” tab and in the “Measurements” section set an ellipsoid for calculations, e.g. WGS 84, and target units for distance and area measurements. Click on “Apply” button and close the window.

Now distances and areas will be calculated correctly via any of the possible methods:
* With the tool “Measure Line”/“Measure area” from the Attribute Toolbar:

* With the tool “Identify Features” from the same Attribute Toolbar:

* With the Field Calculator in the Attribute Table of the layer:

# centerline.html.md
# Central lines of polygons
This instrument creates centerlines for polygons. It is helpful for transforming roads or rivers digitized as polygons into lines.

Inputs:
* Polygon vector layer in a GDAL-supported format, e.g. GeoPackage, GeoJSON, MapInfo TAB, ESRI Shapefile (the latter two should be in ZIP archive).
Outputs:
* Line vector layer in GeoPackage.
Launch the tool: [https://toolbox.nextgis.com/t/centerline](https://toolbox.nextgis.com/t/centerline)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# centroid2attr.html.md
# Points inside polygons
Calculate coorinates of a point guaranteed to be inside a polygon and add the calculated coordinates to point_X, point_Y attributes. PointOnSurface method.
Inputs:
* Polygon vector layer in one of the formats, supported by GDAL, e.g. Shapefile in ZIP-archive, GeoJSON, GeoPackage.
Outputs:
* ZIP with polygonal shapefile with two fields added: point_X, point_Y

Launch the tool: [https://toolbox.nextgis.com/t/centroid2attr](https://toolbox.nextgis.com/t/centroid2attr)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# change.html.md
# Editing
## Change resource
Execute following PUT request to change resource.
### PUT /api/resource/(*int:* id)
Change resource request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **id** – resource identifier
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **display_name** (*string*) – resource new name
* **keyname** (*string*) – resource new key
* **id** (*int*) – resource new parent identifier (resource will move to new parent)
* **description** (*string*) – resource new description
* **permissions** (*jsonarr*) – resource permissions array
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/8 HTTP/1.1
Host: ngw_url
Accept: */*
{"resource":
{
"display_name":"test3",
"keyname":"qw4",
"parent":{"id":7},
"permissions":[],
"description":"rrr5"
}
}
```
#### NOTE
Payload of this request may be equal to create new resource request payload,
but some fields can be omitted. Request must be authorized.
**Move resource in terminal**:
```bash
url='https://sandbox.nextgis.com'
login='administrator'
password='demodemo'
curl -d '{"resource":{"parent":{"id":373}}}' -u $login:$password -X PUT $url/api/resource/381
```
**Change display name of resource**
## Change webmap
When changing layers in webmap, you should set in PUT query both ‘children’ and ‘item_type’ objects.
**Example request**:
```python
layer1 = {
"layer_adapter": "tile",
"layer_enabled": None,
"style_parent_id": 454,
"draw_order_position": None,
"layer_max_scale_denom": None,
"payload": None,
"item_type": "layer",
"layer_min_scale_denom": None,
"display_name": "gidro_ln",
"layer_style_id": 478,
"layer_transparency": None
}
layer2 = {
"layer_adapter": "tile",
"layer_enabled": True,
"style_parent_id": 453,
"draw_order_position": None,
"layer_max_scale_denom": None,
"payload": None,
"item_type": "layer",
"layer_min_scale_denom": None,
"display_name": "qml/rast2_ln",
"layer_style_id": 489,
"layer_transparency": None
}
layers = (layer1,layer2)
payload = {'webmap':{'root_item':{'item_type':'root', 'children': layers } }}
url=self.ngw_url+'/api/resource/'+str(webmap_id)
response = requests.put(url, json = payload, auth=self.ngw_creds)
```
## Change metadata
This query create metadata fields, or updating it if they exists.
**Example request**:
```http
PUT /api/resource/8 HTTP/1.1
Host: ngw_url
Accept: */*
{
"resmeta":{
"items":{
"UPDATED_AT":"2018-11-07 14:00",
"CHECKED_AT":"2018-11-07 12:00"
}
}
}
Same steps with curl:
```
```bash
curl --user "user:password" -H 'Accept: */*' -X PUT -d '{"resmeta": {"items":{"UPDATED_AT":"2018-11-07 14:00", "CHECKED_AT":"2018-11-07 12:00"}}}' http:///api/resource/(int:id)
```
## Change file bucket resource
To change file bucket execute following PUT request:
### PUT /api/resource/(*int:* id)
Change file bucket request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **id** – resource identifier
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `file_bucket`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **file_bucket** (*jsonobj*) – file bucket JSON object
* **files** (*jsonarr*) – array of files should present in bucket: present (which need to delete don’t include in array), also new files (upload response JSON object, files == upload_meta)
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/22 HTTP/1.1
Host: ngw_url
Accept: */*
{
"file_bucket": {
"files": [
{
"mime_type": "application/x-dbf",
"name": "grunt_area_2_multipolygon.dbf",
"size": 36607
},
{
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shp",
"size": 65132
},
{
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shx",
"size": 1324
},
{
"id": "fb439bfa-1a63-cccc-957d-ae57bb5eb67b",
"mime_type": "application/octet-stream",
"name": "grunt area description.txt",
"size": 50
}
]
},
"resource": {
"cls": "file_bucket",
"description": "some new text",
"display_name": "new grunt_area",
"keyname": null,
"parent": {
"id": 0
}
}
}
```
In this example, file *grunt area description.txt* will added, files
*grunt_area_2_multipolygon.cpg*, *grunt_area_2_multipolygon.prj* - deleted,
and bucket name and description will changed.
## Change lookup table resource
To change flookup table execute following PUT request:
### PUT /api/resource/(*int:* id)
Change lookup table request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **id** – resource identifier
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `lookup_table`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **lookup_table** (*jsonobj*) – lookup table values JSON object. Key - value JSON object struct.
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/22 HTTP/1.1
Host: ngw_url
Accept: */*
{
"lookup_table": {
"items": {
"car": "Машина",
"plane": "Самолет"
}
}
}
```
Same steps with curl:
```bash
$ curl --user "user:password" -H 'Accept: */*' -X PUT -d '{"lookup_table":
{"items":{"car":"Машина", "plane":"Самолет"}}}'
http:///api/resource/
```
## Change feature
To change feature in vector layer execute following request:
### PUT /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)?srs=(*int:* srs)
Change feature request
* **Parameters:**
* **layer_id** – layer resource identifier
* **feature_id** – feature identifier
* **Query Parameters:**
* **srs** – EPSG code for input SRS (will be automatically reprojected to destination SRS)
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **geom** (*string*) – geometry in WKT format (geometry type and spatial reference must be corespondent to layer geometry type and spatial reference)
* **id** (*int*) – feature identifier
* **Request JSON Array of Objects:**
* **fields** – attributes array in form of JSON field name - value object
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/3/feature/1 HTTP/1.1
Host: ngw_url
Accept: */*
{
"extensions": {
"attachment": null,
"description": null
},
"fields": {
"Age": 1,
"DateTr": {
"day": 7,
"month": 2,
"year": 2015
},
"Davnost": 4,
"Foto": 26,
"Nomerp": 1,
"Nomers": 1,
"Samka": 0,
"Sex": 3,
"Sizeb": 0.0,
"Sizef": 0.0,
"Sizes": 9.19999980926514,
"Snowdepth": 31,
"Wher": "\u043b\u044b\u0436\u043d\u044f",
"id01": 0
},
"geom": "MULTIPOINT (15112317.9207317382097244 6059092.3103669174015522)",
"id": 1
}
```
In request payload add only changed fields. Other fields will stay unchanged. Also geometry field may be skipped.
To change features in batch mode use patch request.
### PATCH /api/resource/(*int:* layer_id)/feature
Change features request
* **Parameters:**
* **layer_id** – layer resource identifier
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Array of Objects:**
* **geom** (*string*) – geometry in WKT format (geometry type and spatial reference must be corespondent to layer geometry type and spatial reference)
* **fields** (*jsonarr*) – attributes array in form of JSON field name - value object
* **id** (*int*) – feature identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
Request accepts array of JSON objects. If feature identifier is not present in PATCH
body a feature will be created, else - changed.
**Example request**:
```http
PATCH /api/resource/3/feature/ HTTP/1.1
Host: ngw_url
Accept: */*
[
{"geom": "POINT(30.20 10.15)", "fields": {"externalObjectId": "i1"}},
{"id": 24, "geom": "POINT(30.20 10.15)", "fields": {"externalObjectId": "i2"}},
{"geom": "POINT(30.20 10.15)", "fields": {"externalObjectId": "i3"}}
]
```
**Example response body**:
```json
[
{"id": 25},
{"id": 24},
{"id": 26}
]
```
## Change attachment
Only following information can be changed:
\* file name
\* description
To change attachment execute following request:
### PUT /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)/attachment/(*int:* attachment_id)
Change feature request
* **Parameters:**
* **layer_id** – layer resource identifier
* **feature_id** – feature identifier
* **attachment_id** – attachment identifier
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **name** – new name
* **description** – new description
* **Response JSON Object:**
* **id** – attachment identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/3/feature/1/attachment/4 HTTP/1.1
Host: ngw_url
Accept: */*
{"name": "49.qml", "description": "qqq"}
```
```bash
curl --user "user:password" 'https://sandbox.nextgis.com/api/resource/9/feature/1/attachment/4' -X PUT -H 'content-type: application/json' -H 'accept: */*' --data-binary '{"name": "49.qml", "description": "qqq"}'
```
## Delete feature
To delete feature from vector layer execute following request:
### DELETE /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)
Delete feature request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **layer_id** – resource identifier
* **feature_id** – feature identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
DELETE /api/resource/3/feature/1 HTTP/1.1
Host: ngw_url
Accept: */*
```
## Delete features
To delete list of features execute following request:
### DELETE /api/resource/(*int:* layer_id)/feature/
Delete features request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **layer_id** – resource identifier
* **Request JSON Array of Objects:**
* **id** (*int*) – feature identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
DELETE /api/resource/3/feature/ HTTP/1.1
Host: ngw_url
Accept: */*
[{"id": 25},{"id": 24},{"id": 26}]
```
## Delete all features
To delete all feature in vector layer execute following request:
### DELETE /api/resource/(*int:* layer_id)/feature/
Delete features request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **layer_id** – resource identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
DELETE /api/resource/3/feature/ HTTP/1.1
Host: ngw_url
Accept: */*
```
## Delete attachment
To delete attachment from a feature execute following request:
### DELETE /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)/attachment/(*int:* attachment_id)
Delete feature request
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Parameters:**
* **layer_id** – resource identifier
* **feature_id** – feature identifier
* **attachment_id** – attachment identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
DELETE /api/resource/3/feature/1/attachment/1 HTTP/1.1
Host: ngw_url
Accept: */*
```
```bash
curl --user "user:password" -H 'Accept: */*' -X DELETE 'https://sandbox.nextgis.com/api/resource/9/feature/1/attachment/1'
```
## Delete all attachments
To delete all attachments of a feature execute following request:
### PUT /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)
Change feature request
* **Parameters:**
* **layer_id** – layer resource identifier
* **feature_id** – feature identifier
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Array of Objects:**
* **extensions** – empty attachment array
* **Response JSON Object:**
* **id** – feature identifier
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
**Example request**:
```http
PUT /api/resource/3/feature/1 HTTP/1.1
Host: ngw_url
Accept: */*
{
"extensions":
{
"attachment":[]
}
}
```
```bash
curl 'https://sandbox.nextgis.com/api/resource/9/feature/1' --user "user:password" -H 'Accept: */*' -X PUT -H 'content-type: application/json' --data-binary '{"extensions":{"attachment":[]}}'
```
# changelog.html.md
# Changelog
**2.0.3 released on 05 Aug 2026**
- Device ID can now be copied by tapping it
- Fixed the prompt to save changes appearing when no changes were made
- Fixed issues with the “initial extent” functionality
- Fixed an issue where a layer added to a project with a style was not displayed
- Fixed navigation to the current location when tapping “move point to the center of the screen”
**2.0.2 released on 30 Jun 2026**
* Added support for the “Spacer” element in forms
* Use dt_format=iso for PUT and POST requests
* Fixed a crash when a field name contains a dot
* Fixed an incorrect User-Agent in photo requests
* Fixed the layer tree button disappearing from the map
* Fixed a crash caused by empty groups in a project
* Fixed attachment filenames not being passed to Web GIS
* Fixed typos in the interface
# changelog.html.md
# Changelog
**2.26 released on 18.08.2026**
- Add languages: French, Spanish.
- MapLibre for Node.js upgraded to 6.4.1.
- Add OpenType fonts support.
- Improved initial map extent on service preview.
- Minor interface improvements.
**2.25 released on 29.06.2026**
- Support tileset create from MBTiles.
- Service preview without browser cache.
- Release info on “About” page.
**2.24 released on 26.05.2026**
- NextGIS Web service default extent set from constraining web map extent instead of initial.
- External service tile size setting has been removed. Only 256x256 px tiles are supported.
- Minor stability and error handling improvements.
**2.23 released on 27.04.2026**
- New service type - Tileset.
- Create API key when registering OAuth user.
- Select API key for URL templates.
- Fixed default maximum zoom in API key create dialog.
- Fix error when logging in using OAuth.
- Fix user profile edit error.
**2.22 released on 31.03.2026**
- WebP format support for external services.
- Fix seeding of external services with CRS EPSG:3857.
- Fix tiles deletion from Redis during seeding.
- Simplify service pages paths.
- Clear service permissions for deleted users and groups.
- Improved internal database integrity.
**2.21 released on 17.12.2025**
- Fix missing space symbol in font glyphs.
- Replace unsupported text font with Open Sans.
- Support HTTP(S) proxy.
- Healthcheck NGW connection.
**2.20 released on 1.11.2025**
- Add storage estimation feature.
- Make name_{lang} MVT attribute contain a certain language.
- Show zoom on preview page.
- Add status and OSM PBF hints.
- Remove legacy renderer.
- Fixed getting OAuth groups from token.
- Dropped LDAP login support.
**2.19.0 released on 21.07.2025**
- Show seeding services at overview page.
- Delete tile cache on service delete.
- Fix tile rendering of basemap and NGW services on certain scales.
- Fix raster cache invalidation.
- Fix label layers of default styles.
- Fix creation of NGW services from web map with empty extent.
- Fix delete basemap data button.
**2.18.0 released on 14.05.2025**
- Add picker with 3 default styles for basemap service.
- Fix authorization and permissions check.
- Reduce MVT languages to “name”, “name:en” and “name:ru”.
- Improve MVT generation performance.
- Allow CORS for maplibre.org by default.
- Improve seeding stability.
- Fix metatile locking, better cache errors handling.
- Experimental NGW layers support for basemap service.
**2.17.0 released on 10.03.2025**
- Add “landcover” basemap layer.
- Add OpenSans font.
- PBF glyphs of all system fonts are available via API.
- Basemap auto update disabled by default.
- Fix edge basemap tiles rendering.
- Fix NGW service scales vision.
- Fix API-key creating with expiration date.
- A lot of fixes for seeding.
- Own Redis container based on Ubuntu 24.04.
- Experimental Maplibre GL renderer support.
# changelog.html.md
# Changelog
**3.2.1 released on 05 Aug 2026**
* Require confirmation before deleting a newly created or modified object
* Fixed an unnecessary dialog when opening NGRC
* Fixed an unnecessary prompt to save changes when there are no changes
**3.2.0 released on 30 Jul 2026**
* Support for the MBTiles format for local raster layers
* Customizable label colors for polygons and lines
* Go to coordinates tool
* Replace the object deletion popup with a confirmation dialog
* Link to the Web GIS administrator contact form when the user has insufficient permissions
* Use the NGRC file name as the layer name
* Fixed a synchronization error when submitting data with an empty date
* Fixed an issue where the date could not be entered through the form
* Fixed the track visibility toggle state not being displayed correctly
* Fixed an error when attempting to download a non-image attachment from NGW
* Fixed unnecessary text centering in the feature table
* Fixed track visibility toggle not working
* Fixed track display color changes not being applied
* Fixed NGW layer properties enabling auto-sync unexpectedly
* Renamed “Your UID” to “Device ID” to match the Web GIS
* Fixed incorrect rendering of the ruler enable checkbox
**3.1.2 released on 14 Jul 2026**
* Removed all extent requests while adding a raster layer
* Fixed incorrect indication of synchronization flag under Web GIS settings
**3.1.1 released on 08 Jul 2026**
* Added a clear error message instead of “Account is null” when attempting to add a layer
* Added a notification when a form field cannot be used for input
* Added support for selecting a label attribute for feature identification
* The ruler tool is now enabled by default
* Fixed unintended geometry changes when the user did not edit the geometry
* Fixed point features being moved to the current location during creation
* Fixed multiple requests being sent for the same layer
* Fixed the incorrect “Contains ads” label in Google Play
* Added Sentry profiling configuration
# check_geometries.html.md
# Check geometries
Checking the vector file for geometry validity. The output is a CSV file with a list of errors and coordinates and a GeoJSON file with geometries of the location of errors.
Inputs:
* ZIP archive with vector files.
Single-file formats should be in the root of the archive. For multi-file formats such as ESRI Shapefile, each layer should be put in a separate ZIP inside the main input archive. Input archive may contain mixed files.

Outputs:
* CSV file containing the list of errors;
* GeoJSON file with points marking the placement of the errors.
Launch the tool: [https://toolbox.nextgis.com/t/check_geometries](https://toolbox.nextgis.com/t/check_geometries)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# clickfu.html.md
# Click-Fu
Send click coordinates to various geoservices to open their maps in a browser at the chosen location. Supports Google Maps, OSM, Flickr Maps, GeoHack Map Sources.
After the installation you can find the plugin in the Web menu.
1. In the plugin menu select the service where you want to open your area of interest.

1. Click on a point on the map in QGIS.
Your browser will open the selected service displaying the coordinates of the point.
See how the plugin works in our video:
Watch on [youtube](https://youtu.be/H_mDkoCsQ-Y?si=TispKDxEygvfTfZb).
# clip_polys_poly.html.md
# Calculate areas of intersection
Calculates area of polygons inside and outside given boundary. Records results in hectares (ha) to the attributes of a vector layer in Web GIS on NextGIS platform.
NextGIS Web (NGW) is a geodata managing system. You can use it for free after [signing up](https://docs.nextgis.com/docs_ngcom/source/create.html). With NextGIS Web you can store geodata, create interactive online maps, give access to them to your teammates and clients, edit features directly on the map and in the feature tables, as well as process them with specialized Toolbox tools. [More on what NGW can do](https://docs.nextgis.com/docs_ngweb/source/general.html).
Inputs:
* Web GIS URL - URL of a NextGIS Web instance. Example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com);
* Login - NextGIS ID or username of a user who has write access to the resource group;
* Password;
* Boundary layer ID - ID of the boundary polygon layer in Web GIS;
* Polygons layer ID - ID of a layer with polygon features in Web GIS;
* Area field - attribute in the features layer where the area of the features will be stored;
* Area field (within boundary) - attribute in the features layer where the area of features falling within the boundary will be stored.
Outputs:
* Modified layer in Web GIS.
Launch the tool: [https://toolbox.nextgis.com/t/clip_polys_poly](https://toolbox.nextgis.com/t/clip_polys_poly)
**Try the tool in action by downloading our example:**
[Input data set](https://nextgis.com/data/toolbox/clip_polys_poly/clip_polys_poly_inputs.zip) to test the tool. The archive contains step-by-step instructions.
# code_formatting.html.md
# Code formatting
Code formatting takes lots of time and may trigger endless discussions. That’s
why we use code formatting automation in NextGIS Web. Here is the summary of its
settings:
Python:
- Indentation: 4 spaces
- Quotes: double
- Line length: 100
- Linter: Ruff
- Formatter: Ruff
- Import sorting: Ruff
JavaScript and TypeScript:
- Indentation: 4 spaces
- Quotes: double
- Line length: 80
- Linter: ESLint
- Formatter: Prettier
- Import sorting: ESLint plugin
CSS and LESS:
- Indentation: 4 spaces
- Line length: 80
- Formatter: Prettier
- Keys sorting: Prettier plugin
Markdown:
- Indentation: 4 spaces
- Line length: 80
- Formatter: Prettier
We use this settings for NextGIS Web core itself and for extensions.
Configuration details are in the corresponding files like `pyproject.toml` or
`.prettierrc.cjs`.
# collector.html.md
# How to begin data collection in your Web GIS
#### NOTE
In the cloud, you can use the described functionality on all pricing plans. However, Free and Mini plans have onle one Collector user available. You can add new users on the [Premium plan](https://nextgis.com/pricing-base/).
For on-premise solutions, data collection functionality is available for NextGIS Web [Extended](https://nextgis.com/pricing/#ngwextended) and [Enterprise](https://nextgis.com/pricing/#ngwenterprise).
## Introduction
Collecting spatial data is used to get geographic and attributive information about objects located in some area. Geographic information is a set of coordinates. Attributive information is a description of the object’s features.
#### NOTE
As an **example** we can describe a task of monitoring the condition of road infrastructure objects.
A road maintenance service should perform monitoring of the roadbed condition.
Objects of spatial data collecting in this case are roadbed damages.
Geographical information in this example is coordinates of the damages. Attributive information includes
damage type, its size, a description of its location within roadbed, photos of the damage.
The NextGIS Collector was developed to simplify the procedure of such data collection and to give an instrument to do it.
However before a technical description of this system possibilities let’s look at the main participants of data collection in order to better understand how this system works.
There are two roles in a process of spatial data collection:
* An organizer of data collection.
* A participant of data collection.

An *organizer of data collection* is a subject who organizes the process of data collection, gathers a team of participants, controls the process and verifies the data. An organizer could be a group of people as well as an individual. In the above-mentioned example a road maintenance service was the organizer.
Below there are some more examples of data collection organizers and their tasks.

A *participant of data collection* is a person who collects data in the field. His task is to describe properties of a real object in the field. Before active spreading of mobile devices people collected data using a paper notebook. Nowadays mobile devices help to simplify this process and decrease the number of mistakes, so we assume that every participant of data collection has a mobile device.
## Principles of work with NextGIS Collector
NextGIS Collector is a technology created to simplify spatial data collection in the field.
NextGIS Collector allows the owner of a Web GIS created on nextgis.com to organize a team and to begin data collection using mobile devices.
NextGIS Collector is a technological stack allowing users to create a dataflow between an organizer and participants of data collection for effective process supervision and easier data collection (the process is described in the previous section).

There are several stages of data collection process in NextGIS Collector:
1. The organizer of data collection registers in [nextgis.com](http://nextgis.com/) and creates a Web GIS.
2. The organizer [creates data collection forms](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form) in the Web GIS.
3. A team of data collection participants registers in [nextgis.com](http://nextgis.com/).
4. The organizer of data collection adds a team of data collection participants to his Web GIS and creates a project of data collection.
5. Data collection participants install the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) app and join the project.
6. Data collection participants begin data collection. Data is sent to Web GIS automatically.
These stages of work with NextGIS Collector could be described schematically as follows:
To sum up, to begin data collection:
- The data collection organizer should have a Web GIS.
- Every data collection team participant should have a mobile device with Android OS.
- Every data collection team participant should register in [nextgis.com](http://nextgis.com/) and know his registration email and password.
## Organizer of data collection: adding team participants in Web GIS
The first stage of work with the system is adding data collection participants in the Web GIS of the data collection organizer. Data collection team participants should have a mobile device with Android OS. They need to install the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app on each of mobile devices - it will allow them to update data and synchronize updates with the Web GIS of the data collection organizer.
Besides, each data collection team participant should be registered in [nextgis.com](http://nextgis.com/). Team participant can do it himself and pass his login to the data collection organizer. A login in [nextgis.com](http://nextgis.com/) is the email used for a registration.
When all data collection team participants are registered in [nextgis.com](http://nextgis.com/), the data collection organizer will have a list of their emails.
To add team participants to the Web GIS you need to do the following:
1. Open Web GIS as administrator.
2. The home page of your Web GIS resources will be opened. Open the “Main menu” panel:

1. In the main menu select «Control panel»:

1. In «Settings» of the control panel select «Collector projects»:

1. A page for managing data collection participants will be opened:

1. To add a team participant to the Web GIS press “Create” button. It will redirect you to the “Create new collector” page. Make sure to type in full email adress that serves as NextGIS ID login.
#### NOTE
We recommend filling up the field “Description” with the name and the surname of the team participant in order to have data about all NextGIS Collector users in one place. You can always find the participant you need with a search tool in a table of Collector users, which is quite suitable when there are a lot of participants.

1. As a result of this stage all data collection team participants will be registered in your Web GIS.

Users with a registration in your Web GIS can access data collection projects from your Web GIS and begin data collection after they installed the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app and successfully sign in there. However you can control the access of different users to each individual project. It is described in details below.
## Organizer of data collection: creating data collection project
Data collection project is a resource in your Web GIS, it is a set of layers for editing.
In a Web GIS “data collection project” is called “Collector Project”.
Data collection project allows a data collection team participant to edit its layers.
Web GIS owner can restrain access to the project for separate participants.
You can create a Collector project via NextGIS Formbuilder (the simplest way, described [here](https://docs.nextgis.com/docs_formbuilder/source/workflow.html#nextgis-web)) or in your WebGIS.
If you want to use your WebGIS to create a Collector project, first you need to [create necessary data layers](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-empty-vector-layer) or [upload them from a file](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-process-create-vector-layer).
Let’s suppose that layers with data are already uploaded to your Web GIS, and you want to create a project and allow data collection team participants to collect or edit data in your Web GIS.
To do it:
1. Open the Web GIS.
2. Create a basemap if the collector will need to see a map on the mobile app.
3. In «Create resource» select «Collector project»:

1. Name your project. This name will be displayed in the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app :

1. In the “Project” tab configure:
* The **starting screen** that collector see in the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app when they join the project. It can be a list of forms or a map;
* **Initial extent** defines what area is displayed on the screen when the project is open. By default it’s the entire world. You can enter project boundaries in degrees or select a layer to set it. If the project extent is set, collectors will get a warning when they try to add a point outside this extent (which can happen if there are geolocation issues).
* **Mobile project setup configuration**, for advanced users, allows to automate working with a big number of device.

1. The next stage is adding necessary items to the project on the “Items” tab.
An item of Collector project could be an editable data layer, display-only data layer, basemap or a form for data collection.
#### NOTE
You could add PostGIS layers in Collector project, but the NextGIS Collector mobile app does not support work with them for now
Adding of items is like adding layers when creating a Web Map. Press the **+ Layer** button to add a layer or a data collection form. Select the vector layer in the resource list, not the form. Press **+ Group** to create a group of items. Drag-and-drop of items is available within the item tree. To delete an item, press **X** at the end of the row.
Click on the item to see its attributes.

Each item of Collector project has the following attributes:
- «Display name» - a layer name which is displayed in the NextGIS Collector mobile app.
- «Editable» - allow or deny editing of the layer in the NextGIS Collector mobile app.
- «Visible» - controls layer’s visibility in the NextGIS Collector mobile app.
- «Syncable» - allow or deny synchronization of the layer with your Web GIS.
- «Zoom level visibility» - defines for which zoom levels the layeer is visible. It has two parameters: Min zoom and Max zoom.
- «Lifetime for tiles (in min)» - time of tiles cashing (for tile layers).
To go back to the list of items, press **Hide details**.
1. Add basemap if necessary.
2. Then on the “Collectors” tab tick the users participating in the project to give them permissions:

1. Press “Create”.
As a result a Collector project (data collection project) will be created.
You can have unlimited number of projects in your Web GIS. In each of them you can restrain or allow access for a particular set of participants from the data collection team.
## Team participants: mobile app installation and start of data collection
Data collection team participant should download and install the NextGIS Collector mobile app on his mobile device.
You could download it from Google Play Store using the following link - [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector)
or find it by the name in Google Play Store.

After the instalation is completed, start the app, skip information screens and give necessary permissions:

By default the server used is my.nextgis.com, you can also choose to [use on-premise server](../../docs_collector/source/auth.md#ngcollector-auth).
If you’re using NextGIS ID, make sure to enter the full email address.
After successful signing in you will see a list of projects.

To join a project tap on it and confirm the action in the pop-up.
There are two possible starting screens for a project: a map or a list of layers.
To switch to the map view press the  icon in the bottom right corner.
If you are in the map mode, press the three lines in the top left corner to view the layer tree.

After completing these steps a data collection team participant can begin editing layers.
The process of editing and the editing tools are similar to those in NextGIS Mobile. [More on adding and editing features and track recording](https://docs.nextgis.com/docs_collector/source/map_tools.html).
#### IMPORTANT
We recommend collecting data with activated GPS.
## Administrator’s check-list
This a short version of a Web GIS administrator check-list. Follow the steps to get your data collection up and running.
1. Formulate a list of feature attributes that you’re going to collect and describe in the field.
2. Install NextGIS Software on your desktop.
3. Create a Web GIS at nextgis.com.
4. Add yourself as a user. ☰ - Control panel - Collector projects. Enter your e-mail, registered at nextgis.com
5. Create an account to send data from NextGIS Collector app and give it the necessary permissions. For example:
Full name: Collector. Login: Collector. Password. Description: NextGIS Collector Account. Groups: Administrator.
6. Create a form, set field aliases for readability. Set default values for lists.
7. Create Collector project and a Web Map for data visualisation.
8. Check the form on your device.
9. Continue adding other users. For simplicity, ask users to register using gmail account. Gmail client is already on every android, and already signed in. Add names for the data collectors.
# collector.html.md
# Collector projects
To set up data collection:
1. Add users that are going to collect data to the [list of data collectors](https://docs.nextgis.com/docs_ngweb/source/collector.html#ngw-collector-add-members);
2. Create [vector layer and data collection form](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form);
3. Create and configure [data collection project](https://docs.nextgis.com/docs_ngweb/source/collector.html#project-wizard).
## List of collectors
In the Collector Projects section of the Control Panel, you can manage the list of [data collectors](https://docs.nextgis.com/docs_ngcom/source/collector.html). Each participant must have a [NextGIS ID account](https://docs.nextgis.com/docs_ngcom/source/create.html#how-to-create-account-nextgis-id).

To add a team participant to the Web GIS press “Create” button.
It will redirect you to the “Create new collector” page. Make sure to type in full email address that serves as NextGIS ID login.
#### NOTE
We recommend filling up the field “Description” with the name and the surname of the team participant in order to have data about all NextGIS Collector users in one place.
You can always find the participant you need with a search tool in a table of Collector users, which is quite suitable when there are a lot of participants.

As a result of this stage all data collection team participants will be registered in your Web GIS.

Users with a registration in your Web GIS can access data collection projects from your Web GIS and begin data collection after they installed the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app and successfully sign in there.
However you can control the access of different users to each individual project.
Now you can created the neccessary resources for data collection.
## Data collection project
Data collection project is a resource in your Web GIS, it is a set of layers for editing.
In NextGIS Web a data collection project resource is called “Collector Project”.
Data collection project allows a data collection team participant to edit its layers.
Web GIS owner can restrain access to the project for separate participants.
Before creating a Collector project make sure you’ve completed the preparation:
1. Added users who are going to gather data to the [List of collectors in the Control panel](https://docs.nextgis.com/docs_ngweb/source/collector.html#ngw-collector-add-members);
2. [Created](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-empty-vector-layer) or [uploaded](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-process-create-vector-layer) vector layers and (optionally) added [forms](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form) for them.
### Set up Collector project
To create a new data collection project, go to the Main resource group and select **Set up Collector project** in the menu on the right.

A wizard page opens, different from the standard resource creating interface.

Fill in this form to create a project.
* **Project name** - a resource group is created in your Web GIS. This group contains the Collector project resource as well as a Web Map for data visualisation.
* **Items**
You can add:
* data collection form,
* editable vector layer,
* display-only layer,
* basemap. A default basemap is automatically included in the project, but you can [create another basemap](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-create-basemap) and add is a separate item.
Click “+ Item” to add an item.
* To add an **editable data layer** select the *layer* (If a layer has two or more forms, you can select one or several of them);
* To add a **display-only layer** select its *style*;
* To add a **basemap** select the basemap resource.
You can add multiple items at once, for example, several forms of the same vector layer.
Items selected to be added are marked with a tick. A layer that has a style or form(s) selected is marked with a blue dot.
Navigate between resource groups and tick the items you want to add. The **Add selected** button displays the total number of selected resources. To clear the selection press the  button next to it.

Drag-and-drop to rearrange items within the item tree. To delete an item, press **X** at the end of the row.
Click on the item to see its attributes.

Each item of Collector project has the following settings:
- «Display name» - a layer name which is displayed in the NextGIS Collector mobile app.
- «Editable» - allow or deny editing of the layer in the NextGIS Collector mobile app.
- «Visible» - controls layer’s visibility in the NextGIS Collector mobile app.
- «Syncable» - allow or deny synchronization of the layer with your Web GIS.
- «Zoom level visibility» - defines for which zoom levels the layer is visible. It has two parameters: Min zoom and Max zoom.
- «Lifetime for tiles (in min)» - time of tiles cashing (for tile layers).
To go back to the list of items, press **Hide details**.
* **Collectors** - select the users that need to enter the data in this project. To give a user access to the project, mark the row with a tick.

Web GIS administrator can manage the list of available collectors, add or delete them. Keep in mind, that these changes are general Web GIS settings, they are instantly effective, even if you haven’t completed the project creation.
Click **Create** to complete the process.
The Collector project resource page opens. It is located inside the resource group with the name you set as the project name.

By default this project is displayed in the Collector mobile app as “Collector project”. To set up a custom display name (it’s handy if you have multiple projects going at once), click  Update in the right menu and enter a new name (see [Fig. 635.](#ngc-proj-name-pic)).
Click on the group name to navigate to that group. There, you’ll find three resource with default names: Collector project, Web Map with the same list of layers as the project, and a standard basemap.

For all editable layers added to the project, a style and a form are created if they hadn’t been added beforehand.
You can edit them by clicking “Edit” on the resource page on in the resource list.
If you’re an experienced user and wish to fine-tune the project as you’re creating it, you can use the standard resource creation dialog.
### Advanced Collector project creation
An alternative way to create a Collector project is via the standard resource creation dialog.
Go to the resource group where you want to create a project, click **Create resource** and select «Collector project»:

Name your project. This name will be displayed in the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app :

In the “Project” tab select “Starting screen”. The starting screen in the [NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) mobile app could be a list of forms or a map.

On the Items tab you can Add items, Group them, Delete (X symbol on the right) and change the order by dragging items in the list.

Click on the item to see its attributes.

Then on the “Collectors” tab tick the users participating in the project to give them permissions:

Web GIS administrators can manage the list of available collectors in this section or in the [Control panel](https://docs.nextgis.com/docs_ngweb/source/collector.html#ngw-collector-add-members).
Click **Create**.
As a result a Collector project (data collection project) will be created.
You can have unlimited number of projects in your Web GIS. In each of them you can restrain or allow access for a particular set of users from the data collection participants list.
## Form for data collection
Data collected by field workers is stored in a vector layer. For a vector layer you can create a data collection form as a child resource. It provides a user-freindly interface viewed in the Collector app. Forms are automatically created to editable vector layers added to a Collector project.
To create a new form:
* [upload a vector file](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-process-create-vector-layer)
* or create [an empty vector layer with fitting geometry](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-empty-vector-layer).
Open the resource page of the layer, click **Create resource** and select “Form”.

In the opened window on the Form tab you have two options:
* build a form;
* upload a NGFP file.
To create a new form in the online builder, drag the elements from the list on the left to the middle field. Click on the element to modify it and select the field in which this data will be stored.
If your layer already has attributes, you can select the corresponding field for each element as you add it to the layout.

Or, you can add new fields for the elements. This allows to create an empty layer, then set its structure by creating a form.

If you tick **Add absent fields to layer**, new fields for the added elements will be added to the layer.
Click on the element in the central section to view and modify its properties. More on [properties of each element type](https://docs.nextgis.com/docs_ngweb/source/form_elements.html).

You can set a display name on the Resource tab and add description and metadata on the corresponding tabs.
Click **Create** to finish the process.
You’re redirected to the page of the form resource where you can preview the newly created form.

Next you can:
* create a [data collection project](https://docs.nextgis.com/docs_ngweb/source/collector.html#ngw-collector-create-project);
* or [add the layer to NextGIS Mobile](https://docs.nextgis.com/docs_ngmobile/source/ngw_integration.html#ngmobile-add-layer-webgis), the form will be available for editing data in the app.
Form can be **edited**. Press the pencil icon next to it or open the resource page and click **Edit**. If the form was uploaded from a file, on the Form tab select Design form from the dropdown menu.
After a form is modified, select “Change project” and re-join the project. The new form will be uploaded, allowing you to continue collecting data to the same layer.
You can have **multiple** forms for one layer. Include different forms in different Collector projects or add several forms for one layer in one project.
#### SEE ALSO
Seems confusing? Check out our tutorial [Collect Spatial Data in the Field](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html) that guides you through the whole process step-by-step.
# common.html.md
# General issues
* [How to order data](order.md)
* [Select area](order.md#select-area)
* [Select data type](order.md#select-data-type)
* [Select format](order.md#select-format)
* [Select layers](order.md#select-layers)
* [Purchase](order.md#purchase)
* [Download data](order.md#download-data)
* [How to switch accounts](logout.md)
* [How to open the entire map (project)](open_map.md)
* [How to order printable map](order_printmap.md)
* [Select area](order_printmap.md#select-area)
* [Page settings](order_printmap.md#page-settings)
* [Purchase](order_printmap.md#purchase)
* [Download data](order_printmap.md#download-data)
* [How to open a particular layer](open_layer.md)
* [How to find the object I need on OpenStreetMap](osm_search.md)
* [How to get coordinates of a target object](coord.md)
* [How to get municipal boundaries for a target region](district.md)
* [How to select all of my city’s hospitals on the map](hospital.md)
* [How to prepare map for printing](print.md)
* [How to change the language of labels in OSM data](label_lang.md)
* [NextGIS Data extracts](extracts.md)
* [How the files are organized](extracts.md#how-the-files-are-organized)
* [Attributes in OpenStreetMap extracts](extracts.md#attributes-in-openstreetmap-extracts)
* [Attributes of other products](extracts.md#attributes-of-other-products)
# component.html.md
# Components and environment
Для обеспечения модульности в NGW используются разделение на компоненты. Один python-пакет может содержать один или несколько компонентов. Каждый компонент является наследником класса `Component`, а для загрузки соответствующих модулей используются точки входа (entry points) setuptools.
```python
def pkginfo():
return dict(components=dict(
somecomp='somepackage.somecomp'))
setup(
name = 'somepackage',
entry_points = {'nextgisweb.packages':
'somepackage = somepackage:somemod:pkginfo'}
)
```
У каждого компонента есть идентификатор (`somecomp` в примере выше). Так же этот идентификатор указываетс в атрибуте класса `identity`. Этот идентификатор должен быть уникален в рамках всех пакетов NGW.
Для объединения компонентов в единое целое используется объект-окружение, экземпляр класса `Env`, который создается на этапе инициализации. Инициализация происходит следующим образом:
1. Создаются экземпляры компонентов
2. Для каждого компонента вызывается `initialize()`
3. Для каждого компонента вызывается `configure()`
## Component dependency
Вызовы методов `initialize()` и `configure()` осуществляются с учетом зависимостей, которые могут быть указаны при помощи декоратора `require()`.
Таким образом, если необходимо вызывать `initialize()` компонента `B` после `A`, то выглядеть это будет следующим образом:
```python
from nextgisweb.component import Component, require
class A(Component):
identity = 'A'
def initialize(self):
pass
class B(Component):
identity = 'B'
@require('A')
def initialize(self):
pass
```
## Global environment object
## Component class
## Env class
# component.html.md
# Components and environment
NGW uses components for modularity. One python-пакет can contain
one or several components. Each component inherits class `Component`,
to load packages setuptools entry points are used.
```python
def pkginfo():
return dict(components=dict(
somecomp='somepackage.somecomp'))
setup(
name = 'somepackage',
entry_points = {'nextgisweb.packages':
'somepackage = somepackage:somemod:pkginfo'}
)
```
Each component has an ID (`somecomp` in an example above). The same ID
is used in a class attribute `identity`.
This ID must be unique among all packages of NGW.
To join components together instance of `Env` class is used,
created at init. Initialization runs like this:
1. Component instances are created
2. `initialize()` is called for each component
3. `configure()` is called for each component
## Dependencies between components
Method calls for `initialize()` and
`configure()` happen in accordance
with dependencies, which can be set using decorator `require()`.
So, is you need to call `initialize()` of component `B` after
`A` do this:
```python
from nextgisweb.component import Component, require
class A(Component):
identity = 'A'
def initialize(self):
pass
class B(Component):
identity = 'B'
@require('A')
def initialize(self):
pass
```
## Global env object
## Component class
## Env class
# configure.html.md
# Configuration
There are two ways to configure NextGIS Web exist:
1. Configuration files.
2. Environment variables.
#### NOTE
Don’t forget to restart NextGIS Web after changes. They don’t affect
configuration until NextGIS Web restart.
## Cofiguration files
Configuration files were mentioned in the Install section. They follow ini-style
syntax and consist of `environment` section and per-component sections.
The `environment` section configures packages, components, and logging, for
example:
```ini
[environment]
package.nextgisweb_basemap = false
compoent.social = false
```
Component sections configure component specific options, for example:
```ini
[file_upload]
max_size = 8589934592
tus.enabled = true
```
The list of possible options and configuration file template can be obtained
using the `nextgisweb-config` command:
```bash
$ nextgisweb-config environment # For environment section
$ nextgisweb-config sentry # For sentry component
$ nextgisweb-config # All available options
```
The output example is given below. You can copy this template and uncomment
needed options, which start with a semi-colon.
```ini
### Component 'file_upload'
[file_upload]
## Option: path (text)
; path =
## Option: max_size (size_in_bytes) (default: 8G)
; max_size = 8G
## Option: chunk_size (size_in_bytes) (default: 16M)
; chunk_size = 16M
```
It’s possible to store all configuration in one file or use multiple files. To
point NextGIS Web to a specific configuration file, the environment variable
`NEXTGISWEB_CONFIG` is used or the `--config` command-line option (when
applicable). The `--config` option takes priority over the
`NEXTGISWEB_CONFIG` environment variable. So when the `--config` option is
given, the `NEXTGISWEB_CONFIG` environment variable will be ignored.
Multiple configuration files can be separated by a colon, and they are merged
during the load.
```bash
# NEXTGISWEB_CONFIG environment variable
$ export NEXTGISWEB_CONFIG=some/config.ini:other/config.ini
# Or --config command-line option
$ nextgisweb --config some/config.ini:other/config.ini ...
```
The last file has more priority than the first one. If some option is used by
both (the first and the last one) files, and only value from the last one will
be used.
## Environment variables
Another way to configure NextGIS Web is using environment variables. It’s
interchangeable with configuration files, and everything that can be configured
with configuration files also can be configured using environment variables.
The conversion rules are quite simple:
* Variable names follow the template:
* `NEXTGISWEB__ENVIRONMENT__KEY` for `environment` section.
* `NEXTIGSWEB__COMPONENT__KEY` for component options.
* All component names and keys are in upper case, and dots are replaced with two
underscores (`__`).
In this way, the following configuration file and environment variables are equivalent.
```ini
[some_component]
first.key = foo
second.key = bar
```
```bash
NEXTGISWEB__SOME_COMPONENT__FIST__KEY=foo
NEXTGISWEB__SOME_COMPONENT__SECOND__KEY=bar
```
The `nextgisweb-config` can generate the template in environment variables
format using option `--env-vars`. For example, command `nextgisweb-config
--env-vars file_upload` will generate something like this:
```bash
### Component 'file_upload'
## Option: path (text)
# NEXTGISWEB__FILE_UPLOAD__PATH=
## Option: max_size (size_in_bytes) (default: 8G)
# NEXTGISWEB__FILE_UPLOAD__MAX_SIZE=8G
## Option: chunk_size (size_in_bytes) (default: 16M)
# NEXTGISWEB__FILE_UPLOAD__CHUNK_SIZE=16M
```
# connect2ngw.html.md
# How to upload data to NextGIS Web with NextGIS Connect
* [Order data](https://data.nextgis.com/en/) for your area of interest in Geopackage format (QGIS).
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Download and install [QGIS](https://qgis.org/en/site/forusers/download.html).
* Launch QGIS. To open a preset GIS project (which includes all layers with customized styles), click “Project” > “Open” and in pop-up window select the saved file “data.qgs”.

* The project will be added to QGIS.

* To transfer GIS project from QGIS to NextGIS Web special plugin is needed. In Menu Toolbar select “Plugins” > “Manage and Install Plugins”. In pop-up window type “NextGIS Connect” into Search field. Check the box next to the plugin to activate it.

* NextGIS Connect panel will appear. You can also call this panel via  button from the toolbar.

* Set connection to your Web GIS: press “Settings” button , then in pop-up window press “New”, in next pop-up window fill in all the fields with the details of your Web GIS and press “Save”. If needed, add authentication configuration with your NextGIS ID login and password.
Press “Close” to finish settings.

* In NextGIS Connect panel resources from your Web GIS are displayed now.

* Select Resource group which will host GIS project, press  “Add to Web GIS” button and select “Import current project” from drop-down list.

* Web map with preset project will appear in your Web GIS

# connections.html.md
# WFS, WMS, TMS layers
NextGIS Web allows to add data from external sources using standard protocols:
* [WFS](https://docs.nextgis.com/docs_ngweb/source/connections.html#ngw-fws-in),
* [WMS](https://docs.nextgis.com/docs_ngweb/source/connections.html#ngw-wms-in),
* [TMS](https://docs.nextgis.com/docs_ngweb/source/connections.html#ngw-tms-in).
Also, you can make a [layer based on a PostGIS database](https://docs.nextgis.com/docs_ngweb/source/postgis_details.html).
## WFS
[WFS](../../glossary.md#term-WFS) allows to get data published on third-party GIS servers (arcgis, geoserver etc), apply custom styles to them and add them to Web Maps.
First you need to create a WFS connection.
### WFS connection
Click **Create resource** button and select **WFS connection**.

Next you can enter a custom name that will be displayed in the resource list.

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
On the “WFS connection” tab enter the parameters that will be used to connect to the **WFS server** providing the data:
* URL
* Username
* Password
* WFS version

If the version you selected is not supported, you’ll get an error message after clicking **Create**:

Next you can create WFS layer resource.
### WFS Layer
**WFS Layer** is added using an existing WFS connection. Select the resource type in the **Create resource** menu.

In the opened window in the “WFS layer” tab select the WFS connection you created. Next select the layer and the geometry field. SRID will be added automatically.

On the “Resource” tab you can set a custom name for the resource. Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
To add a WFS layer to a Web Map, you need to create a style for it. You can create a default QGIS style or [a custom QGIS or Mapserver style](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html) using “Create resource” menu.

## WMS
#### NOTE
Currently supported WMS versions are 1.1.1 and 1.3.0.
NextGIS Web is a [WMS](../../glossary.md#term-WMS) client. To connect a WMS layer you need to know its address and coordinate system. Make sure this SRS is [added to your Web GIS](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html).
See how to add WMS with local CRS in our video:
Watch on [youtube](https://youtu.be/dYvOnKSSqBQ?si=kXYVFnqFXw3IN3kI).
### WMS Connection
To add a WMS layer you need to create a resource called WMS connection. You may create a single connection for many layers. Click **Create resource** button and select **WMS connection**.

Enter the name of the resource that will be displayed in the administrator interface. Not to be confused with layer name in a database. “Keyname” field is optional.

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
On the “WMS connection” tab enter the following WMS server connection parameters:
* URL
* Username
* Password
* Version of WMS protocol
* Capabilities (manages GetCapabilities queries to the WMS Server)
* Referer - optional HTTP header field required to access some services
* Skip SSL/TLS certificate verification
URL field needs to be filled, others are used when necessary.

After setting up all necessery parameters, click **Create**.
### WMS layer
Now you can add WMS layers. Open the resource group where you want to create the layer. Click **Create resource** button and select **WMS layer**.

Enter display name that will be visible in administrator interface and in the map layer tree.

Tile cache settings are described in details [in this section](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#tile-cache).
Switch to the “WMS layer” tab set up the following parameters:
* WMS connection that was created earlier.
* MIME-type from the dropdown list.
* Select the required layers from the list by clicking the underlined names. You can select several layers.
* Remote SRS - if the server supports serveral SRS, you can pick one from a dropdown list. SRS absent from your Web GIS are displayed in grey. Click **Add to Web GIS** to add the SRS and use it. [More on additional SRS](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html#custom-spacial-reference-systems). You can check if this coordinate system is available for a particular layer by making a `GetCapabilites` request to a server and examining the response.
* Vendor parameters - optional

Vendor parameters are special query settings for additional functions. They vary depending on the WMS provider.

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
After setting up all necessery parameters, click **Create**.
#### WARNING
Identification requests to external WMS layers from Web Maps are not supported yet.
## TMS
To add data from external sources using [TMS](../../glossary.md#term-TMS) protocol, first create TMS connection.
#### NOTE
Data uploaded to NextGIS Web, can also be [added to external application via TMS](https://docs.nextgis.com/docs_ngweb/source/external.html).
### TMS connection
To add a TMS layer, you first need to create a [TMS](../../glossary.md#term-TMS) connection. Click on **Create resource** button and select **TMS connection** (see [Fig. 507.](#tms-connection-create)).

Enter the connection name that will be displayed in the administrator interface (see [Fig. 508.](#tms-connection-name)).

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
On the TMS connection tab you need to select the way to connect to the TMS server - custom or via NextGIS GeoServices (see [Fig. 509.](#tms-connection-type)).

In the case of a custom connection method, the user must specify the URL template, API key parameters if needed and the tile scheme used. For NextGIS GeoServices, only a custom API key is specified. After filling in all fields click **Create** to complete the process of creating a **TMS Connection** resource.
### TMS layer
**TMS layer** resource is created using previously created **TMS Connection**. Click on **Create resource** button and select **TMS layer** (see [Fig. 510.](#tms-layer-create)).

Enter the name that will be displayed in the administrator interface (see [Fig. 511.](#tms-layer-name)).

Caching provides faster rendering of Web Map layers. Tile cache settings are described in details [in this section](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#tile-cache).
The main display settings are on the TMS layer tab (see [Fig. 512.](#tms-layer-settings-pic)):
* TMS connection - select a TMS connection resource that was created earlier;
* The range of zoom levels for data display;
* The extent in degrees;
* Tile size in pixels.

After creating a TMS layer, the user can add it to the Web Map to display. No style is needed.
# connectpoints.html.md
# Connect Points
Create lines connecting two point layers using matching attribute values.
Points in one layer are matched to points in another layer with the same value of the specified numeric attribute (e.g. id).
After installation you’ll find the plugin in the Plugins toolbar: .
First open the plugin Settings dialog from its dropdown menu:
* Select layer FROM;
* Select layer TO;
* Select ID field in the FROM layer;
* Link field - select the field in the FROM that contains the value to be matched with the attribute in the TO layer;
* Select ID field in the TO layer;
* Choose the way to save the result: select an existing line layer of the project or enter a name to create a new layer.
Press **Ok** to save the settings.
In the plugin dropdown menu select **Connect points**. Plugin will generate lines that link the points of the FROM layer to points of the TO layer, with indicated direction.
See how the plugin works in our video:
Watch on [youtube](https://youtu.be/enD5z4mwsfg?si=CRV60Tm7xaNLVPyY).
# convert.html.md
# Convert format of vector layer
Convert vector layer to other file format.
Coordinate refrence system (CRS) is not changing.
If output format is ESRI Shapefile, encoding of attributes cast to UTF-8.
Input:
* Vector layer file or ZIP archive compatible with GDAL library. [List of supported formats](https://docs.nextgis.com/docs_toolbox/source/convert.html#format-list)
* Name of output format: ESRI Shapefile, MapInfo TAB, GeoJSON, GPKG, DXF, FlatGeobuf.
#### NOTE
If uploaded file has incompatible format (for example, single SHP file) an error message will appear.
Output:
* ZIP archive with vector layers
Launch the tool: [https://toolbox.nextgis.com/t/convert](https://toolbox.nextgis.com/t/convert)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
## Supported input formats
* ADBC - Arrow Database Connectivity
* AIVector - Artificial intelligence powered vector driver
* AmigoCloud - AmigoCloud
* Arrow - (Geo)Arrow IPC File Format / Stream
* AVCBIN - Arc/Info Binary Coverage
* AVCE00 - Arc/Info E00 (ASCII) Coverage
* CAD - AutoCAD DWG
* CARTO - Carto
* CSV - Comma Separated Value (.csv)
* CSW - OGC CSW (Catalog Service for the Web)
* DGN - Microstation DGN
* DGNv8 - Microstation DGN v8
* DWG - AutoCAD DWG
* DXF - AutoCAD DXF
* EDIGEO - EDIGEO
* EEDA - Google Earth Engine Data API
* Elasticsearch - Elasticsearch: Geographically Encoded Objects for Elasticsearch
* ESRI Shapefile - ESRI Shapefile / DBF
* ESRIJSON - ESRIJSON / FeatureService driver
* FileGDB - ESRI File Geodatabase (FileGDB)
* FlatGeobuf - FlatGeobuf
* GDALG - GDALG: GDAL Streamed Algorithm
* GeoJSON - GeoJSON
* GeoJSONSeq - GeoJSONSeq: sequence of GeoJSON features
* GeoRSS - GeoRSS : Geographically Encoded Objects for RSS feeds
* GML - Geography Markup Language
* GMLAS - Geography Markup Language (GML) driven by application schemas
* GMT - GMT ASCII Vectors (.gmt)
* GPKG - GeoPackage vector
* GPSBabel - GPSBabel
* GPX - GPS Exchange Format
* GRASS - GRASS Vector Format
* GTFS - General Transit Feed Specification
* HANA - SAP HANA
* IDB - IDB
* IDRISI - Idrisi Vector (.VCT)
* INTERLIS 1 - “INTERLIS 1” and “INTERLIS 2” drivers
* JML - JML: OpenJUMP JML format
* JSONFG - OGC Features and Geometries JSON
* KML - Keyhole Markup Language
* LIBKML - LIBKML Driver (.kml .kmz)
* LVBAG - Dutch Kadaster LV BAG 2.0 Extract
* MapInfo TAB - MapInfo TAB and MIF/MID
* MapML - MapML
* MEM - In Memory datasets
* Memory - Memory (deprecated)
* MiraMonVector - MiraMon Vector
* MongoDBv3 - MongoDBv3
* MSSQLSpatial - Microsoft SQL Server Spatial Database
* MVT - MVT: Mapbox Vector Tiles
* MySQL - MySQL
* NAS - ALKIS
* netCDF - NetCDF: Network Common Data Form - Vector
* NGW - NextGIS Web
* OAPIF - OGC API - Features
* OCI - Oracle Spatial
* ODBC - ODBC RDBMS
* ODS - Open Document Spreadsheet
* OpenFileGDB - ESRI File Geodatabase vector (OpenFileGDB)
* OSM - OpenStreetMap XML and PBF
* Parquet - (Geo)Parquet
* PDF - Geospatial PDF
* PDS - Planetary Data Systems TABLE
* PGDump - PostgreSQL SQL Dump
* PGeo - ESRI Personal GeoDatabase
* PLScenes - PLScenes (Planet Labs Scenes/Catalog API)
* PMTiles - PMTiles
* PostgreSQL - PostgreSQL / PostGIS
* S57 - IHO S-57 (ENC)
* Selafin - Selafin files
* SOSI - Norwegian SOSI Standard
* SQLite - SQLite / Spatialite RDBMS
* SXF - SXF
* TileDB - TileDB vector
* TopoJSON - TopoJSON driver
* VDV - VDV-451/VDV-452/INTREST Data Format
* VFK - Czech Cadastral Exchange Data Format
* VRT - OGR Virtual Format
* WAsP - WAsP .map format
* WFS - OGC WFS service
* XLS - MS Excel format
* XLSX - MS Office Open XML spreadsheet
* XODR - OpenDRIVE Road Description Format
# coord.html.md
# How to get coordinates of a target object
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoPackage (QGIS) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Add a layer with target object to [QGIS](https://qgis.org/en/site/forusers/download.html).
* Find target object on the map (or through attribute table) and select it. Selected point object is highlighted with yellow on the map and with blue – in attribute table. If you selected an object through the map, use “Move selection to top” button to locate it in attribute table.

* Do not deselect feature in attribute table and press “Ctrl + C” (it allows to copy all attributes of a target object) and then paste it into any text or table editor or processor. In a very first column named “wkt_geom” you will find coordinates of one or several points (if your target object is a line or polygon), belonging to the object.

* If desired it is possible to get coordinates of the middle of a line object. Select target object through the map or attribute table.

* Then in a Processing Toolbox Panel (press “Ctrl+Alt+T” to display) find and select GDAL/OGR algorithm “Create points along lines”. In pop-up window choose a layer with a target object as an “Input layer”. For shapefiles set “geometry” into “Geometry column name” field. Set “0.5” into “Distance from line start…” field. Press “Run”. If you only need the middle of one particular feature of the layer, tick “Selected feature”.

* As a result new layer is created with a point located exactly in a middle of target line. To get point’s coordinates please see instruction above.

* If desired it is possible to get coordinates of the center of a polygon object. Install plugin “realcentroid”. Then select target object through the map or attribute table. Launch “realcentroid” plugin. In pop-up window set layer with a target object, check boxes “Selected features only” and “Add to map canvas”, set name and path for output layer.

* As a result new layer is created with a point located in the centre of target polygon. To get point’s coordinates please see instruction above.
# coord_recalc.html.md
# Reproject coordinates
Tool reprojects coordinates of the objects, presented in CSV file, into a given coordinate system.
Inputs:
* CSV file - file with a list of objects and its coordinates
* X coordinate column number - index number of the column in CSV file, where X coordinates are located (longitude).
* Y coordinate coordinate column number - index number of the column in CSV file, where Y coordinates are located (latitude).
* ID of the first row - index number of the row, from which reprojection should be applied.
* Source CRS - coordinate reference system, used in source CSV. Should be specified in proj4 format (e.g. `+proj=longlat +ellps=WGS84 +datum=WGS84 + no_defs`).
* Target CRS - coordinate reference system into which data will be reprojected. Should be specified in proj4 format (optional, by default `+proj=longlat +ellps=WGS84 +datum=WGS84 + no_defs` will be applied).
Output:
* CSV with added reprojected coordinates.
Launch the tool: [https://toolbox.nextgis.com/t/coord_recalc](https://toolbox.nextgis.com/t/coord_recalc)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# coords2poly.html.md
# Coordinates to polygon
Create polygon geometry from Excel or CSV file with lat/lon columns.
Inputs:
* Source file. Input table with lat/lon columns, supported formats: XLSX,XLS,CSV;
* Output format. Select one of the options: GPKG, GEOJSON, SHP, TAB;
* Columns order. Check if the order of the columns is **Lat/Lon**. Default order: Lon/Lat.
Outputs:
* Geodata in the selected format.
Launch the tool: [https://toolbox.nextgis.com/t/coords2poly](https://toolbox.nextgis.com/t/coords2poly)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# copycoords.html.md
# Copy_Coords
This plugin captures map coordinates of the click to paste them into a spreadsheet. No key combinations needed.
After installation you’ll find the plugin in the Plugins toolbar: 
Also you can activate the module via menu
```
:menuselect:`Plugins ‣ Copy_Coords ‣ Copy coordinates`
```
.
When the plugin is active, your cursor becomes a green arrow. Click on the map to copy the coordinates to the clipboard. Paste from the clipboard as usual.
Coordinates are copied in the project CRS. Use SHIFT to copy coordinates in EPSG:4326 (WGS 1984) independently from what your current CRS is.
You can check out how the plugin works in our video:
Watch on [youtube](https://youtu.be/ISH2bB6quB4?si=zrfCB-6KWaJLGKQe).
# cors.html.md
# Cross-origin resource sharing (CORS)
#### NOTE
This functionality is available only to nextgis.com [Mini and Premium users](https://nextgis.com/pricing-base/).
If you’re a developer and would like to use your Web GIS as a backend for your own map or an app, you can switch on and set up [CORS](../../glossary.md#term-CORS).
This mode allows to use data from Web GIS for a map or system on your ogranization’s domain, while all geodata uploads and management pains will be taken care of by your Web GIS at nextgis.com.
In your Web GIS Control panel go to “Cross-origin resource sharing (CORS)” section and enter allowed origins for cross-domain requests on CORS Settings page, one origin per line. Press **Save**.

Please note that different protocols (HTTP and HTTPS) and subdomains (example.com and www.example.com) are different origins. Wildcards are allowed for third-level domains and higher.
# count_tiles.html.md
# Count TMS tiles for polygon
Calculates the number of TMS tiles for a given vector polygon.
Inputs:
* Boundary polygon vector file in OGR format or ZIP-archive with single layer. Geometry: polygon or multipolygon. Only the frist feature of the layer is used.
Outputs:
* Text output listing the number of tiles for each zoom layer and the total tile count.
Launch the tool: [https://toolbox.nextgis.com/t/count_tiles](https://toolbox.nextgis.com/t/count_tiles)
Example:

Example output:
```default
0: 1
1: 1
2: 1
3: 1
4: 1
5: 1
6: 1
7: 1
8: 1
9: 2
10: 2
11: 2
12: 2
13: 3
14: 3
15: 5
16: 14
17: 47
18: 148
19: 491
Total: 728
```
**Try the tool in action:**
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# create.html.md
# Account
## How to create account (NextGIS ID)
Before you can start working with your [Web GIS](description.md#ngcom-description) you need to create an account (NextGIS ID). NextGIS ID is required to access all NextGIS Services, including Web GIS service.
To sign up, use [this link](https://my.nextgis.com/signup/) or press
**Sign in** on the main page of the [nextgis.com](https://nextgis.com/) Web site (see [Fig. 1.](#nextgis-main-page-pic)):

Press **Create account** and enter your email, it will be your login for NextGIS services.

Click **Continue**. An email verification code will be sent to the address you entered.

Enter the verification code and click **Verify**. You can request a new code after two minues. If you realise you’ve made a typo in the email address, click **Sign up with another email**.
After verifying your email enter the name that will be indicated in your profile and select a country from the dropdown list to see the correct information on available payment methods.

On the next step enter a password, confirm that you agree to [Terms of Service](https://nextgis.com/terms/) and [Privacy Policy](https://nextgis.com/privacy/) and then click **Create account** to complete the process.
Password must be at least 8 characters long and include one lowercase letter, one uppercase letter, one number, and one of special characters: `! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ ] ^ ` { | } ~ _`.

#### NOTE
Also you can create a NextGIS ID by signing in with your Google account.
After clicking the **Create account** button you’ll be redirected to the page where you can [create a Web GIS](https://docs.nextgis.com/docs_ngcom/source/create_webgis.html).
#### WARNING
You will not be able to create Web GIS and access other NextGIS services until you confirm your email address.
To verify your email account click **Create Web GIS** button, then click **Send the email again** link in the “Please confirm your E-mail” window (see [Fig. 7.](#confirm-email-pic)). Check your email, you should receive a letter with an account confirmation link. When you receive the letter, click on the link to confirm your email address.

## Sign-in via NextGIS ID
NextGIS ID is used to log in to your [account profile](https://my.nextgis.com), your Web GIS, [Toolbox](https://toolbox.nextgis.com/) and other NextGIS services (see [full list below](https://docs.nextgis.com/docs_ngcom/source/create.html#ngcom-ngid-use)).
After selecting sign-in with NextGIS ID, you’ll be redirected to the following page:

Enter the email address you used for creating your account and press **Continue**. On the next page enter the password and press **Sign in**.

The process of logging in varies depending on particular software and services, see [Where can I use NextGIS ID](https://docs.nextgis.com/docs_ngcom/source/create.html#ngcom-ngid-use).
## Change or recover NextGIS ID password
If you:
* forgot your password;
* want to set a different password;
* have signed up with Google, but now want to use NextGIS Connect plugin
go to [Password Recovery page](https://my.nextgis.com/password/reset/?email=).

Enter the email address you used to create NextGIS ID. You’ll receive an email with further instructions.
## My account
After logging in to your [account](https://my.nextgis.com/profile) you can:
* Modify your personal information;
* Manage your subscription;
* [Create a Web GIS](https://docs.nextgis.com/docs_ngcom/source/create_webgis.html) (after confirming your email address);
* Download NextGIS software installers;
* View [the list of teams](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-view) that you are a member of;
* [Manage your team](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management) (available on [Premium](https://nextgis.com/pricing-base/));
* Bind NGID on-premise identifier.
### Profile
You’ll find your profile on [https://my.nextgis.com/profile](https://my.nextgis.com/profile).

On the Profile page you can:
* Change your username or enter name and surname to be displayed instead of it.
* Add company and industry info and phone number.
* Select language of the account interface. This setting affects only my.nextgis.com. If you want to choose the language of your Web GIS, go to the [user menu](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-change-lang) of the Web GIS.
* [Add Telegram account](https://docs.nextgis.com/docs_ngcom/source/create.html#ngcom-ngid-telegram) to get notifications.
* Export your account data as CSV files.
* [Delete NextGIS ID account](https://docs.nextgis.com/docs_ngcom/source/create.html#ngcom-ngid-profile-del) and personal data associated with it.
### Delete profile
To delete your account, go to the Profile page and in the “Profile management” section select **Delete profile**.
Your account and personal data will be deleted.
#### IMPORTANT
This action cannot be undone.

### Get notifications in Telegram messenger
Add Telegram account to get notifications about orders you made on [NextGIS Data](https://data.nextgis.com/en/) not just by email (where they may get into spam folder), but also in Telegram. You can also download the data directly from the messenger.
In your [Profile](https://my.nextgis.com/profile) go to the “Social Accounts” section and click **Link** by the Telegram logo. You’ll be redirected to the chat bot. Press **Start** to complete linking.
### Software
On the Software page of your account you can download online and offline installers for NextGIS mobile apps [NextGIS Collector](https://docs.nextgis.com/docs_collector/source/auth.html#), [NextGIS Mobile](https://docs.nextgis.com/docs_ngmobile/source/auth.html#), [NextGIS Tracker](https://docs.nextgis.com/docs_ngtracker/source/setting_up.html#ngtr-set-send).

## Where can I use NextGIS ID
Cloud services (For on-premise services use [NextGIS ID on-premise](https://docs.nextgis.com/docs_ngid/source/index.html))
* Web GIS created on NextGIS Web
To create a Web GIS, go to your [account](https://docs.nextgis.com/docs_ngcom/source/create_webgis.html).
You can use NGID to [log in](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-admin-login) to your own Web GIS or the Web GIS of the [team owner](https://docs.nextgis.com/docs_ngcom/source/teams.html), if you are added to the team.
* [Toolbox](https://docs.nextgis.com/docs_toolbox_prem/source/auth.html#)
* [GeoServices](https://docs.nextgis.com/docs_geoservices/source/auth.html#)
* [QuckMapServices](https://qms.nextgis.com/about)
* Download data ordered on [NextGIS Data](https://data.nextgis.com/en/)
Mobile apps
* [NextGIS Collector](https://docs.nextgis.com/docs_collector/source/auth.html#)
* [NextGIS Mobile](https://docs.nextgis.com/docs_ngmobile/source/auth.html#)
* [NextGIS Tracker](https://docs.nextgis.com/docs_ngtracker/source/setting_up.html#ngtr-set-send)
Desktop apps
* [NextGIS QGIS](https://docs.nextgis.com/docs_ngqgis/source/auth.html#)
* [Formbuilder](https://docs.nextgis.com/docs_formbuilder/source/gui.html#ngfb-auth)
QGIS plugins
* [NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/ngc_install.html#ng-connect-new-connection)
# create.html.md
# Create resource
## Resource group
To create new group execute following request.
### POST /api/resource/
Create resource group request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `resource_group`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – group name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{"resource":
{"cls":"resource_group",
"parent":{"id":0},
"display_name":"test",
"keyname":"test_key",
"description":"qqq"
}
}
```
Same steps with curl:
```bash
curl --user "administrator:demodemo" -H "Accept: */*" -X POST
-d '{"resource": {"cls": "resource_group", "display_name": "foldername", "parent": {"id": 0},
"description" : "Folder created from curl"} }' https://sandbox.nextgis.com/api/resource/
```
## PostGIS Connection
To create PostGIS connection execute following request.
### POST /api/resource/
PostGIS connection create request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `postgis_connection`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **postgis_connection** (*jsonobj*) – postgis connection JSON object
* **database** (*string*) – Database name
* **hostname** (*string*) – Database host
* **port** (*string*) – Database port
* **password** (*string*) – password
* **username** (*string*) – login
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"postgis_connection": {
"database": "postgis",
"hostname": "localhost",
"password": "secret",
"username": "user"
},
"resource": {
"cls": "postgis_connection",
"description": "The localhost PostGIS Connection",
"display_name": "localhost",
"keyname": "localhost_key",
"parent": {
"id": 0
}
}
}
```
## PostGIS Layer
To create PostGIS layer execute following request.
### POST /api/resource/
Create PostGIS layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `postgis_layer`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **postgis_layer** (*jsonobj*) – postgis layer JSON object
* **column_geom** (*string*) – geometry column name (usually `wkb_geometry`)
* **column_id** (*string*) – primary key column (usually `ogc_fid`)
* **connection** (*jsonobj*) – PostGIS connection identifier (to create PostGIS connection see [PostGIS Connection](#ngwdev-create-pg-conn))
* **fields** (*string*) – check to reread fields from database (must be `update` or not set)
* **geometry_type** (*string*) – geometry type (if null, will read from database table). See ngwdev_geom_types
* **schema** (*string*) – table schema
* **srs** (*jsonobj*) – spatial reference JSON object
* **id** – EPSG code
* **table** (*string*) – table name
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"postgis_layer": {
"column_geom": "wkb_geometry",
"column_id": "ogc_fid",
"connection": {
"id": 31
},
"fields": "update",
"geometry_type": null,
"schema": "thematic",
"srs": {
"id": 3857
},
"table": "roads"
},
"resource": {
"cls": "postgis_layer",
"description": null,
"display_name": "test",
"keyname": null,
"parent": {
"id": 0
}
}
}
```
## Empty vector layer
To create empty vector layer execute following request:
### POST /api/resource/
Create PostGIS layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `vector_layer`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **vector_layer** (*jsonobj*) – vector layer JSON object
* **fields** (*jsonarr*) – array of json objects:
* **geometry_type** (*string*) – geometry type. See ngwdev_geom_types
* **srs** (*jsonobj*) – spatial reference json object
* **id** – [EPSG](../../../glossary.md#term-EPSG) code
* **Request JSON Array of Objects:**
* **keyname** (*string*) – field name
* **datatype** (*string*) – field type. See ngwdev_field_types
* **display_name** (*string*) – field alias
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
{
"resource":{
"cls":"vector_layer",
"parent":{
"id":0
},
"display_name":"Foo bar",
"keyname":null,
"description":null
},
"resmeta":{
"items":{
}
},
"vector_layer":{
"srs":{ "id":3857 },
"geometry_type": "POINT",
"fields": [
{
"keyname": "REAL_FIELD",
"datatype": "REAL"
},
{
"keyname": "INTEGER_FIELD",
"datatype": "INTEGER"
},
{
"keyname": "DATE_FIELD",
"datatype": "DATE"
},
{
"keyname": "TIME_FIELD",
"datatype": "TIME",
"display_name": "TIME FIELD"
}
]
}
}
Same steps with curl:
```
```bash
```
curl -d ‘{ “resource”:{“cls”:”vector_layer”, “parent”:{“id”:0}, “display_name”:”new”}, “vector_layer”:{“geometry_type”:”LINESTRING”,”srs”:{“id”:3857}, “fields”:[{“keyname”:”fieldname1”,”datatype”:”STRING”,”display_name”:”fld1”}]} }’ -u administrator:demodemo -X POST https://sandbox.nextgis.com/api/resource/
## Vector layer with data
Vector layer creation from geodata source ([Shapefile](../../../glossary.md#term-Shapefile), [GeoJSON](../../../glossary.md#term-GeoJSON)) consists of following steps:
1. Prepare vector geodata for layer
2. Upload vector geodata
3. Create vector layer
### Preparing vector data
To prepare your data export it to ESRI Shapefile or GeoJSON format. Make sure there are no `id` field names.
Layer must have spatial reference and `UTF-8` or `CP1251` encoding. Geometry must be valid and exist in all features, field names and values cannot include non-printable characters.
### Uploading vector geodata
If geodata is in ESRI Shapefile format, all files must be packed into the one ZIP archive. GeoJSON file can be uploaded without archiving. Geodata uploading details see in [File upload](file_upload.md#ngwdev-file-upload).
### Create vector layer
To create vector layer execute following request:
### POST /api/resource/
Create vector layer from uploaded file request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `vector_layer`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **vector_layer** (*jsonobj*) – vector layer JSON object
* **source** (*jsonobj*) – JSON object with file upload response
* **srs** (*jsonobj*) – spatial reference of creating vector layer. Only EPSG:3857 is supported
* **id** – EPSG code
* **source_layer** (*string*) – source layer name (for multiple layer sources)
* **cast_geometry_type** (*string*) – layer geometry type: `POINT`, `LINESTRING` or `POLYGON`. `null` for auto-detect (default)
* **cast_is_multi** (*bool*) – is layer geometry multi. `null` for auto-detect (default)
* **cast_has_z** (*bool*) – is layer geometry 3D. `null` for auto-detect (default)
* **skip_other_geometry_types** (*bool*) – skip features with other geometry types, used if `cast_geometry_type` is specified (default: `false`)
* **fix_errors** (*string*) – data errors fix level: `NONE` - do not fix (default), `SAFE` - without losing data, `LOSSY` - whatever possible
* **skip_errors** (*bool*) – skip features with unfixable errors (default: `false`)
* **fid_source** (*string*) – feature ID source: `SEQUENCE` - ID is counted from 1 (default), `FIELD` - get ID from field (`fid_field` required), `AUTO` - get ID from field if `fid_field` is set, otherwise count from 1
* **fid_field** (*string*) – field from which feature ID is taken (optional)
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "vector_layer",
"description": null,
"display_name": "ggg www",
"keyname": null,
"parent": {
"id": 0
}
},
"vector_layer": {
"source": {
"encoding": "utf-8",
"id": "2f906bf9-0947-45aa-b271-c711fef1d2fd",
"mime_type": "application/zip",
"name": "ngw1_1.zip",
"size": 2299
},
"srs": {
"id": 3857
},
"cast_geometry_type": "POLYGON",
"cast_is_multi": true,
"cast_has_z": false,
"skip_other_geometry_types": true,
"fix_errors": "LOSSY",
"skip_errors": true,
"fid_source": "AUTO",
"fid_field": "ngw_id"
}
}
```
Same steps with curl:
```bash
$ curl -F file=@/tmp/bld.zip http://demo.nextgis.com/api/component/file_upload/
{"upload_meta": [{"id": "00cc4aa9-cca7-4160-b069-58070dff9399", "name": "bld.zip",
"mime_type": "application/octet-stream", "size": 62149}]}
$ curl --user "user:password" -H "Accept: */*" -X POST -d '{"resource":
{"cls": "vector_layer","description": "test curl create", "display_name": "buildings",
"keyname": null,"parent": {"id": 0}},"vector_layer": {"source": {"encoding": "utf-8",
"id": "00cc4aa9-cca7-4160-b069-58070dff9399","mime_type": "application/zip","name": "bld.zip",
"size": 62149},"srs": {"id": 3857}}}' http://demo.nextgis.com/api/resource/
{"id": 108, "parent": {"id": 0}}
```
Create vector layer in ogr2ogr:
```bash
$ ogr2ogr -f NGW -overwrite -t_srs EPSG:3857 -lco "KEY=data"
-lco "OVERWRITE=YES" "NGW:https://sandbox.nextgis.com/resource/464/data"
PG:"dbname=gis" "data"
```
Ccreate vector layer with data group 464, layer will have name “data”, keyname “data”. Layer will take from local PostGIS database, table name is “data”.
## Feature in vector or PostGIS layer
To create new feature in vector layer execute following request:
### POST /api/resource/(*int:* layer_id)/feature/?srs=(*int:* srs)
Create feature request
* **Parameters:**
* **layer_id** – layer resource identifier
* **Query Parameters:**
* **srs** – EPSG code for input SRS (will be automatically reprojected to destination SRS)
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **geom** (*string*) – geometry in WKT format (geometry type and spatial reference must be corespondent to layer geometry type and spatial reference)
* **Request JSON Array of Objects:**
* **fields** – attributes array in form of JSON field name - value object
* **Response JSON Object:**
* **id** (*int*) – new feature identifier
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/3/feature/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"extensions": {
"attachment": null,
"description": null
},
"fields": {
"Age": 1,
"DateTr": {
"day": 7,
"month": 2,
"year": 2015
},
"Davnost": 4,
"Foto": 26,
"Nomerp": 1,
"Nomers": 1,
"Samka": 0,
"Sex": 3,
"Sizeb": 0.0,
"Sizef": 0.0,
"Sizes": 9.19999980926514,
"Snowdepth": 31,
"Wher": "\u043b\u044b\u0436\u043d\u044f",
"id01": 0
},
"geom": "MULTIPOINT (15112317.9207317382097244 6059092.3103669174015522)"
}
```
For timestamp field input value must be divided on parts: *day*, *month*,
*day*, *hour*, *minute*, *second*.
In request payload add only set fields. Other fields will set to default values.
**Example response body**:
```json
{"id": 25}
```
## Add attachment to feature
Upload attachment as describe in [File upload](file_upload.md#ngwdev-file-upload).
Add new attachment to feature in vector layer execute following request:
### POST /api/resource/(*int:* layer_id)/feature/(*int:* feature_id)/attachment/
Add attachment request
* **Parameters:**
* **layer_id** – layer resource identifier
* **feature_id** – feature identifier
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **name** (*string*) – file name
* **size** (*int*) – attachment size from upload meta return after uploaded
* **mime_type** (*string*) – attachment meta from upload meta return after uploaded
* **JSON Parameters:**
* **id** (*int*) – upload file identifier from upload meta return after uploaded
* **Response JSON Object:**
* **id** (*int*) – new attachment identifier
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/3/feature/1/attachment/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"name": "196.qml",
"size": 1401,
"mime_type":"application/octet-stream",
"file_upload": {
"id": "14158d93-3798-4f1f-ba18-f526e86e6e83",
"size": 1401
}
}
```
**Example response body**:
```json
{"id": 7}
```
## Batch create features in vector layer
To create multiple features in vector layer execute following request:
### PATCH /api/resource/(*int:* layer_id)/feature/
Payload is an array of feature definitions, like in POST request
Example of curl command to create empty vector layer:
```bash
$ curl --user "administrator:demodemo" -H "Accept: */*" -X POST
-d '{ "resource":{ "cls":"vector_layer", "parent":{ "id":0 },
"display_name":"Foo bar", "keyname":null, "description":null },
"resmeta":{ "items":{ } }, "vector_layer":{ "srs":{ "id":3857 },
"geometry_type": "POINT", "fields": [ { "keyname": "INTEGER_FIELD",
"datatype": "INTEGER" } ] } } ' http://dev.nextgis.com/sandbox/api/resource/
{"id": 994, "parent": {"id": 0}}
```
Example of curl command to upload two features in new vector layer:
```bash
$ curl --user "administrator:demodemo" -H "Accept: */*" -X PATCH
-d '[{"fields":{"INTEGER_FIELD":26},"geom":"POINT (15112666.6 6059666.6)"},
{"fields":{"INTEGER_FIELD": 27},"geom":"POINT (15112666.6 6059666.6)"}]'
http://dev.nextgis.com/sandbox/api/resource/994/feature/
```
## Raster layer
Raster layer creation consists of following steps:
1. Raster file prepare
2. Upload raster
3. Create raster layer
### Preparing raster data
You can upload rasters in GeoTIFF format with 3 (RGB) or 4 (RGBA) bands. GeoTIFF file must have spatial reference, which can project to web map spatial reference (usually EPSG:3857). Value of bands `color interpretation` must be set. Compression (LZW, DEFLATE) can be used to decrease traffic. Pixel values must be between 0 to 255 (8 bit).
### Loading raster
Prepared raster can be uploaded. See [File upload](file_upload.md#ngwdev-file-upload).
### Create raster layer
To create raster layer execute the following request:
### POST /api/resource/
Create raster layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **cls** (*string*) – type (must be `raster_layer`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **source** (*jsonobj*) – JSON object with file upload response
* **srs** (*jsonobj*) – spatial reference of creating raster layer
* **id** – EPSG code
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "raster_layer",
"display_name": "20150820_211250_1_0b0e",
"parent": {"id": 101}
},
"raster_layer": {
"source": {
"id": "a2f381f9-8467-477c-87fa-3f71ecb749a5",
"mime_type": "image/tiff",
"size": 17549598
},
"srs": {"id": 3857}
}
}
```
Same steps with curl:
```bash
$ curl --user "user:password" --upload-file 'tmp/myfile.tif' http://demo.nextgis.com/api/component/file_upload/
{"id": "a2f381f9-8467-477c-87fa-3f71ecb749a5", "mime_type": "image/tiff", "size": 17549598}
$ curl --user "user:password" -H "Accept: */*" -X POST -d '{ "resource": {
"cls": "raster_layer", "display_name": "20150820_211250_1_0b0e", "parent": { "id": 101 } },
"raster_layer": { "source": {"id": "a2f381f9-8467-477c-87fa-3f71ecb749a5", "mime_type": "image/tiff",
"size": 17549598}, "srs": {"id": 3857} } }' http://demo.nextgis.com/api/resource/
{"id": 102, "parent": {"id": 101}}
```
## File bucket
File bucket creation includes 2 steps:
1. Upload files
2. Execute POST request to create file bucket
### File upload
Upload files to server. See [File upload](file_upload.md#ngwdev-file-upload). Any file types are supported.
### Create file bucket
To create file bucket execute following request:
### POST /api/resource/
Create file bucket request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `file_bucket`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **files** (*jsonobj*) – Part of upload JSON response (files == upload_meta)
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"file_bucket": {
"files": [
{
"id": "b5c02d94-e1d7-40cf-b9c7-79bc9cca429d",
"mime_type": "application/octet-stream",
"name": "grunt_area_2_multipolygon.cpg",
"size": 5
},
{
"id": "d8457f14-39cb-4f9d-bb00-452a381fa62e",
"mime_type": "application/x-dbf",
"name": "grunt_area_2_multipolygon.dbf",
"size": 36607
},
{
"id": "1b0754f8-079d-4675-9367-36531da247e1",
"mime_type": "application/octet-stream",
"name": "grunt_area_2_multipolygon.prj",
"size": 138
},
{
"id": "a34b5ab3-f3a5-4a60-835d-318e601d34df",
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shp",
"size": 65132
},
{
"id": "fb439bfa-1a63-4384-957d-ae57bb5eb67b",
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shx",
"size": 1324
}
]
},
"resource": {
"cls": "file_bucket",
"description": null,
"display_name": "grunt_area",
"keyname": null,
"parent": {
"id": 0
}
}
}
```
**Example response body**:
```json
{"id": 22, "parent": {"id": 0}}
```
## Mapserver style
To create mapserver vector style execute following request:
### POST /api/resource/
Create vector layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **mapserver_style** (*jsonobj*) – Style json object.
* **xml** (*string*) – MapServer xml style. Supported tags described in ngw_mapstyles.
* **resource** (*jsonobj*) – Resource json object.
* **cls** (*string*) – type (must be `mapserver_style`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **parent** (*jsonobj*) – parent resource json object
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"mapserver_style" : {
"xml" : ""
},
"resource": {
"cls": "mapserver_style",
"description": null,
"display_name": "grunt area style",
"keyname": null,
"parent": {
"id": 0
}
}
}
```
**Example response body**:
```json
{"id": 24, "parent": {"id": 0}}
```
## QGIS style
To create QGIS vector style for the layer do the following:
1. Upload file with QGIS style to NGW. See [File upload](file_upload.md#ngwdev-file-upload). Get *id*, *mime_type* and *size* from the reply.
2. Create NGW resource via */api/resource/* as shown below:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"qgis_vector_style": {
"file_upload": {
"id": ,
"mime_type": ,
"size":
}
},
"res_meta": {
"items": {
}
},
"resource": {
"cls": "qgis_vector_style",
"description": null,
"display_name": "My QGIS style",
"keyname": null,
"parent": {
"id":
}
}
}
```
## Raster style
To create raster style execute following request:
### POST /api/resource/
Create raster layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `raster_style`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "raster_style",
"description": null,
"display_name": "landsat style",
"keyname": null,
"parent": {
"id": 0
}
}
}
```
**Example response body**:
```json
{"id": 25, "parent": {"id": 0}}
```
## Lookup table
To create lookup table execute following request.
### POST /api/resource/
Create lookup table request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `lookup_table`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **lookup_table** (*jsonobj*) – lookup table values JSON object. Key - value JSON object struct.
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "lookup_table",
"parent": {
"id": 381
},
"display_name": "test_2",
"keyname": null,
"description": null
},
"resmeta": {
"items": {}
},
"lookup_table": {
"items": {
"cat": "Машина"
}
}
}
```
**Example response body**:
```json
{"id": 25, "parent": {"id": 0}}
```
Same steps with curl:
```bash
$ curl --user "user:password" -H 'Accept: */*' -X POST -d '{"resource":{"cls":"lookup_table",
"parent":{"id":381},"display_name":"test_3","keyname":null,"description":null},"resmeta":
{"items":{}},"lookup_table":{"items":{"cat":"\u041c\u0430\u0448\u0438\u043d\u0430"}}}'
http://demo.nextgis.com/api/resource/
{"id": 385, "parent": {"id": 381}}
```
## Web map
To create new web map execute following request.
### POST /api/resource/
**Example request**:
```http
POST /api/resource HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource":{
"display_name":"Test webmap",
"parent":{
"id":2317
},
"cls":"webmap"
},
"webmap":{
"root_item":{
"item_type":"root",
"children":[
{
"layer_enabled":false,
"layer_adapter":"tile",
"display_name":"LT05_L1TP_124025_20010603_20161211_01",
"layer_style_id":2284,
"item_type":"layer"
}
]
}
}
}
```
Same steps with curl:
```bash
$ curl --user "login:password" -H "Accept: */*" -X POST
-d '{"resource": {"display_name": "cwm Вебкарта", "parent": {"id": 2317},
"cls": "webmap"}, "webmap": {"root_item": {"item_type": "root", "children":
[{"layer_enabled": false, "layer_adapter": "tile", "display_name": "LT05_L1TP_124025_20010603_20161211_01",
"layer_style_id": 2284, "item_type": "layer"}]}}}' http://demo.nextgis.com/api/resource/
```
## WMS Service
To create new WMS service execute following request.
### POST /api/resource/
Create WMS service request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `wmsserver_service`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **wmsserver_service** (*jsonobj*) – JSON object with layers array (required).
* **layers** (*jsonarr*) – array or WMS service layers. keyname, display_name and resource_id are mandatory.
* **Request JSON Array of Objects:**
* **keyname** (*string*) – Key name for WMS service item. Name may be only ASCII symbols without spaces.
* **display_name** (*string*) – Service item name.
* **resource_id** (*int*) – Resource identifier which will be WMS layer datasource. Supported types are: vector layer style, raster style, WMS layer.
* **min_scale_denom** (*string*) – Minimum scale to show WMS layer. String in form of “1 : 100000”.
* **max_scale_denom** (*string*) – Maximum scale to show WMS layer. String in form of “1 : 100000”.
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "wmsserver_service",
"parent": {
"id": 0
},
"display_name": "Test WMS Service",
"keyname": null,
"description": null
},
"resmeta": {
"items": {}
},
"wmsserver_service": {
"layers": [
{
"keyname": "image1",
"display_name": "Image #1",
"resource_id": 127,
"min_scale_denom": null,
"max_scale_denom": null
}
]
}
}
```
**Example response body**:
```json
{"id": 131, "parent": {"id": 0}}
```
Same steps with curl:
```bash
$ curl --user "login:password" -H "Accept: */*" -X POST
-d '{"resource":{"cls":"wmsserver_service","parent":{"id":0},
"display_name":"test1wms","keyname":null,"description":null},
"resmeta":{"items":{}},"wmsserver_service":{"layers":
[{"keyname":"test1","display_name":"test wms layer",
"resource_id":127,"min_scale_denom":null,"max_scale_denom":null}]}}'
http://demo.nextgis.com/api/resource/
{"id": 131, "parent": {"id": 0}}
```
## WMS Connection
To create new WMS connection execute following request.
### POST /api/resource/
Create WMS connection request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `wmsclient_connection`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identificer
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **wmsclient_connection** (*jsonobj*) – JSON object with connection properties (required).
* **url** (*string*) – WMS service url.
* **username** (*string*) – User name to connect to service.
* **password** (*string*) – Password to connect to service.
* **version** (*string*) – WMS version.
* **capcache** (*string*) – If equal query - query capabilities from service.
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "wmsclient_connection",
"parent": {
"id": 0
},
"display_name": "test connection",
"keyname": null,
"description": null
},
"resmeta": {
"items": {}
},
"wmsclient_connection": {
"url": "http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer",
"username": null,
"password": null,
"version": "1.1.1",
"capcache": "query"
}
}
```
Same steps with curl:
```bash
$ curl --user "login:password" -H "Accept: */*" -X POST
-d '{"resource":{"cls":"wmsclient_connection","parent":{"id":0},
"display_name":"test connection","keyname":null,"description":null},
"resmeta":{"items":{}},"wmsclient_connection":{"url":"http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer",
"username":null,"password":null,"version":"1.1.1","capcache":"query"}}'
http://demo.nextgis.com/api/resource/
{"id": 131, "parent": {"id": 0}}
```
## WMS Layer
To create WMS layer from WMS connection execute following request.
### POST /api/resource/
Create WMS layer request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `wmsclient_layer`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **wmsclient_layer** (*jsonobj*) – JSON object with layer properties (required).
* **connection** (*jsonobj*) – WMS connection.
* **imgformat** (*string*) – Image format. Available values can fetched from WMS connection.
* **wmslayers** (*string*) – String with layer identifiers separated with comma. Available layers can fetched from WMS connection.
* **vendor_params** (*jsonobj*) – Additional parameters added to each request. This is key and value list.
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) – no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "wmsclient_layer",
"parent": {
"id": 0
},
"display_name": "layer1",
"keyname": null,
"description": null
},
"resmeta": {
"items": {}
},
"wmsclient_layer": {
"connection": {
"id": 18
},
"srs": {
"id": 3857
},
"imgformat": "image/png",
"wmslayers": "1,2",
"vendor_params": {
"key1": "value1"
}
}
}
```
Same steps with curl:
```bash
$ curl --user "login:password" -H "Accept: */*" -X POST
-d '{"resource":{"cls":"wmsclient_layer","parent":{"id":0},
"display_name":"layer1","keyname":null,"description":null},
"resmeta":{"items":{}},"wmsclient_layer":{"connection":{"id":18},
"srs":{"id":3857},"imgformat":"image/png","wmslayers":"1,2"}}'
http://demo.nextgis.com/api/resource/
{"id": 131, "parent": {"id": 0}}
```
## Tracker
To create tracker execute following request.
### POST /api/resource/
Create tracker request.
* **Request Headers:**
* [Accept](https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2) – must be `*/*`
* [Authorization](https://www.rfc-editor.org/rfc/rfc7235#section-4.2) – optional Basic auth string to authenticate
* **Request JSON Object:**
* **resource** (*jsonobj*) – resource JSON object
* **cls** (*string*) – type (must be `tracker`, for a list of supported types see [Resource classes](resource.md#ngwdev-resource-classes))
* **id** (*int*) – parent resource identifier
* **display_name** (*string*) – name
* **keyname** (*string*) – key (optional)
* **description** (*string*) – description text, HTML supported (optional)
* **resmeta** (*jsonobj*) – metadata JSON object. Key - value JSON object struct.
* **tracker** (*jsonobj*) – JSON object with tracker properties (required).
* **unique_id** (*string*) – Tracker unique identifier (usually IMEA or GUID).
* **description** – Tracker description.
* **device_type** (*string*) – Only supported `ng_mobile`.
* **consumption_lpkm** (*float*) – Fuel consumption per 100 kilometers.
* **Status Codes:**
* [201 Created](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/201) –
no error
**Example request**:
```http
POST /api/resource/ HTTP/1.1
Host: ngw_url
Accept: */*
{
"resource": {
"cls": "wmsclient_layer",
"parent": {
"id": 0
},
"display_name": "layer1",
"keyname": null,
"description": null
},
"resmeta": {
"items": {}
},
"tracker": {
"unique_id": "test-001",
"description": "test desc",
"device_type": "ng_mobile",
"consumption_lpkm": 5.0
}
}
```
Same steps with curl:
```bash
$ curl --user "login:password" -H "Accept: */*"
-d '{"resource":{"cls":"tracker","parent":{"id":4141},
"display_name":"test4","keyname":null,"description":null},
"tracker":{"is_registered":"","unique_id":"971f1-ffc-0f7073",
"description":"","device_type":"ng_mobile","consumption_lpkm":null},
"resmeta":{"items":{}}}' http://demo.nextgis.com/api/resource/
{"id": 4206, "parent": {"id": 4141}}
```
# create_other.html.md
# Creating other types of resources
## Lookup table
To create a lookup table navigate to the group, where you want to create it (root group or another). Press **Create resource** button and select **Lookup table** (see [Fig. 447.](#admin-layers-create-lookup-table)).

In the opened dialog add data in the “value-label” format.
You can also import a pre-made lookup table from a CSV file. Click **Import** and select a CSV file.

In the import dialog you can set up:
* Fields for value and label;
* Delimiter;
* Quote character;
* Escape character;
* Encoding.
In the preview section you can see the resulting table and check if the parameters are set up correctly.

The entries can be sorted in a variety of ways:
* By value, ascending (lower to higher);
* By value, descending (higher to lower);
* By label, ascending;
* By label, descending;
* Custom - drag the six dot icon on the left ([Fig. 449.](#ngweb-creating-a-new-lookup-pic)) to move the entry.
Numbers with separators are treated like decimals, i.e. “1.12” is before “1.7”. If you need to fix it, sort by value first, then switch to “Custom” and move the entries to the correct position.
On the “Resource” tab you can enter a display name. It will be displayed in the resource list and the Web Map layer tree. “Keyname” field is optional.

You can also add resource description and metadata on the corresponding tabs.
Metadata is used in external apps working with [API](https://docs.nextgis.com/docs_ngweb_dev/doc/developer/toc.html).
Then click **Save**.
The window will then look as on [Fig. 451.](#ngweb-new-resource-lookup-pic)

To change anything in a lookup table click **Update** in the “Action” pane.
The resource update dialog will open.
Switch to “Lookup table” tab where you can change the table’s contents:
* add a new value-label pair
* change a current value-label pair
* delete a value-label pair
A lookup table can be exported to a CSV file. It comes in handy if you want to use to create a [data collection form](https://docs.nextgis.com/docs_formbuilder/source/controls.html#fb-edit-combobox-pic).
You can also link a connect a lookup table [to a vector layer field](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#lookup-add-to-field), This way while editing the layer you can choose attribute labels from the list.
See how to work with lookup tables in our video:
Watch on [youtube](https://youtu.be/TVuKHJjjP5E?si=JiGYc2ApkmUbT0LV).
## File bucket
#### IMPORTANT
It is a special type of resource available in [Extended edition of NextGIS on-premise](https://nextgis.com/pricing/). It allows users to create a storage space for any types of files.
On the **Resource** tab enter a name for the file bucket. It will be displayed in the administrator interface. “Keyname” field is optional.

In the **File bucket** tab select files or a ZIP archive to extract files from.

The “Description” and “Metadata” of the resource can be configured on the corresponding tabs.
After a file bucket is created, its contents can be modified. You can add and delete individual files. If you select a new ZIP archive, the files extracted from it will replace all files added before.
Files stored in the bucket can be viewed in browser (if the file type allows it), saved one-by-one from the context menu or exported all at once as a ZIP archive.

# create_resource.html.md
# Adding resources
NextGIS Web is built on a **resource-based** approach - each component of the system (layer, group, service) is a resource.
One of these resources is a **layer** - a raster image or a vector file (database table).
For each layer you can create an **unlimited** number of **styles** - ways to visualize geodata on a Web Map.
Interface for adding of PostGIS layers, vector and raster layers is practically the same. First, you specify the parameters for the layer, and then you add a style that renders data on the Web Map.
To create a new resource, open the group where you want to add it and press **Create resource** button. Then in the pop-up window select the resource type. The window opens on the full list of available resource types.

To find the resource type you need faster, use the search bar.

Resource types are also grouped into categories. You can select a category from the list on the left.
* Layers and styles ([raster](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-raster-layer) and [vector](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-vector-layer) layers and [styles](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html), [basemaps](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-create-basemap))
* Maps and services ([Web Map](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html), WMS, WFS, OGC API - Features services)
* Field data collection ([tracker group, tracker](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create), [Collector project](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-project)), [form for data collection](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form)
* External connections (PostGIS, TMS and WMS connections)
* Miscellaneous ([resource group](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#ngw-resource-group), [SVG marker library](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#ngw-create-svg-marker-lib), [lookup table](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-lookup-table), [file bucket](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-file-bucket))
Click on the resource type to see the detailed description of the process.
## Create Resource group to manage data
Resources can be arranged into groups. For example, you can have special groups for base layers, satellite images and topical data.
#### SEE ALSO
[How to move resources to a group](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-move-resource)
Groups help organize the layers in the Control panel and make it easier to manage access permissions.
To create a resource group navigate to the group, where you want to create a new one (root group or another). Press **Create resource** button and select **Resource group** (see [Fig. 305.](#admin-layers-create-resource-group)).

Create resource dialog for resource group is presented on [Fig. 306.](#ngweb-admin-layers-create-group).

In the opened dialog enter the name of the resource that will be displayed in the administrator interface and in the map layer tree, and then click **Create**.
“Keyname” field is optional. You can also add resource description and metadata on the corresponding tabs.
Metadata is used in external apps working with [API](https://docs.nextgis.com/docs_ngweb_dev/doc/developer/toc.html).
Now you can access newly created Resource group and create new resources in it.
Resources can be [transfered from one group to another](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#move-resource).
#### NOTE
You can also create new Resource groups in Web GIS with desktop app QGIS.
## Data preview
The preview function allows you to see the uploaded data on the basemap or a basemap without adding it on the Web Map.
Click the “eye” icon opposite the name of the child resource you want to preview.
A visual preview of the uploaded geometries will open without the possibility of more detailed interaction (viewing attributes, identifying objects, etc).

Click  **Open in a new tab** to view a bigger preview on a separate page.
Alternatively, open the resource page and click on the **Preview** button in the right menu in the **Extra** section.

To preview a style, open the layer page and click on the eye icon next to the style subresource. The “Preview” action in the Extra tab on the right will display the preview of the resource itself, i.e. layer ([Fig. 310.](#ngweb-preview-vector-pic)).

## Typical structure
With NextGIS Web application experience we recommend creating separate [resource groups](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#ngw-resource-group) (folders) for:
* Web Maps
* Data layers
* External connections
Such structure makes it easier to manage access permissions.
Typical structure
```default
Main resource group
Web Maps
Master Web Map
Test Web Map
PostGIS connections
PostGIS on server
Data layers
Base data
Borders
Infrastructure - linear features
Accounting area
Thematic data
Results of measurements on accounting area
Results of measurements on accounting routes
Observation points for rare species
Relief
ASTER DEM
DEM
Isolines
Topographic data
Openstreetmap
Roads
Administrative borders
Hydrology
Railway stations
Railway roads
Landuse
1 : 100000
M-37-015
M-37-016
M-37-017
Satellite imagery
Landsat-8
Ikonos
```
# create_webgis.html.md
# How to create Web GIS
After you’ve successfully created your account you can start creating your Web GIS.
To create Web GIS you need to complete a Web GIS creation form by indicating domain name (URL) and selecting a data center (see [Fig. 24.](#webgis-creation-1-pic)):

After you finish completing all required fields, press **“Create Web GIS”** button. A message will apear informing you that your Web GIS is being created (see [Fig. 25.](#webgis-creation-2-pic)):

When the creation process is complete, a message will appear. From this message you can open your newly created Web GIS or upgrade your [Plan](http://nextgis.com/nextgis-com/plans) (see [Fig. 26.](#webgis-creation-3-pic)):

You’ll receive an email with your Web GIS login and password. After your Web GIS is created, the outlook of the “Web GIS Settings” page will change: it will contain your Web GIS address and fields for changing your Web GIS password (see [Fig. 27.](#webgis-settings-pic)):

To open your Web GIS click the link on the “Web GIS Settings” page. Web GIS Main resource group will open (see [Fig. 32.](#webgis-main-pic)):

## How to sign in to your Web GIS
To start working in your Web GIS, first sign in using a **“Sign in”** button in the upper right corner.

In the opened dialog press the green button that reads “Sign in with NextGIS ID”.

You will be redirected to my.nextgis.com authorization page. Enter your username or email you used for registration, then on the next page enter your password.

After the authorization is completed successfully you will be redirected back to the Web GIS.
## Main menu
A red rectangle indicates a menu containing “Resources”, “Control panel” (only for Premium users) and “Help” sections.

If you have questions about your Web GIS, you can go to the “Help” section of the menu.

“Help” page with links to user documentation, legal documents and NextGIS contact information will open (see [Fig. 34.](#help-pic)):

# crossing_borders.html.md
# Count number of layer intersections
The tool counts the number of intersections between 2 sets of layers, one of the sets should contain only polygons. In other words, the tool finds, how many objects lay within area of interest, defined by polygons. The result is CSV file with information about each polygon.
Input:
* Area of interest - a set with one or several GeoJSON files, packed in ZIP-archive. Each file should consist only of 1 polygon. Names of the files will be displayed in resulting CSV.
* Objects - one or several vector layers of any geometry type (could differ among layers) in Esri Shapefile or GeoPackage format. Layer or layers should be packed in ZIP-archive.
* Group by layer - optional field. If the box is checked, data in CSV will be grouped by objects’ layers. Otherwise - by geometry types of the objects.
* Separate records - optional field. If the box is checked, each category value (layers or geometry types, depending on the choice above) will be put into a separate record.
Output:
* CSV file with information, how many objects and of which geometry type lay within each polygon.
Launch the tool: [https://toolbox.nextgis.com/t/crossing_borders](https://toolbox.nextgis.com/t/crossing_borders)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# cs_change.html.md
# How to change coordinate reference system of the data
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoJSON (QGIS) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Import the target layer, which coordinate reference system you’d like to change, in [QGIS](https://qgis.org/en/site/forusers/download.html).
* In the Layer menu, select “Save as…”. Thus you’ll create a copy of the layer, but in desired coordinate reference system.

* In pop-up window set a name and a path to a new file. To select its coordinate reference system press “Select CRS” button. One more pop-up window will appear; type either key words or EPSG code into “Filter” field, it is the easiest way to select desired coordinate reference system. Press “OK” in both windows.

* New layer in desired coordinate reference system is created and added to the project. Check of coordinate reference system is available via layer’s properties.

# d3.html.md
# How to use data in D3 (d3.js)
* [Order data](https://data.nextgis.com/en/) for your area of interest in GeoJSON format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Select target layer, for example municipal boundaries (boundary-polygon-lvl6.geojson)
* To use layer in Leaflet first you need to host it (store in a place, accessible via hyperlink).
Simple Leaflet map showing a municipal boundaries layer:
```html
Show Data layer on the D3
```
An extended example can be found [here](https://codepen.io/rendrom/pen/wvrbNMK)
The result:

# data_collection_on_premise.html.md
# Data collection on premise
## Introduction
#### NOTE
**Condition:** This functionality is available for users who have purchased [Extended](https://nextgis.com/pricing/#ngwextended) on premise licence for NextGIS Web.
**Software and components:**
* [NextGIS Collector](https://nextgis.com/nextgis-collector/) - specialized mobile app for field data collection.
* [NextGIS Web](https://nextgis.com/nextgis-web/) (NGW) - Web GIS deployed on your server to synchronize the data gathered in the field, store it, process, visualize and analyze it.
* [NextGIS ID on-premise](https://docs.nextgis.com/docs_ngid/source/index.html) (NGIDOP) - user authorization server for managing access to data collection process.
* [NextGIS Formbuilder](https://nextgis.com/nextgis-formbuilder) - desktop app for creating unique forms for field data collection projects.
**Roles (users):** Administrator and Data Collectors. **Administrator** sets up and organizes data collection (NGW). **Data Collectors** only use NextGIS Collector app.
**Data components:** Geodata consists of two components - point coordinates and attributes (description, attachments/photos)
## Administrator’s check-list
1. NGW and NGIDOP are deployed on the server. You have username and password for Administrator.
2. Check NGIDOP settings (configuration provided on demand): sections [OAuth Applications](https://docs.nextgis.com/docs_ngid/source/ngidop.html#oauth-applications) and [NextGIS ID on-premise](https://docs.nextgis.com/docs_ngid/source/ngidop.html#nextgis-id-on-premise-identificator) - make sure collector_hub is set to the address of the server where the GIS is deployed, **otherwise data collection will be impossible**.
3. Create users for data collectors in the [Team](https://docs.nextgis.com/docs_ngid/source/ngidop.html#ngidop-teams) section of NGIDOP.
4. Open NextGIS Web. In [Control panel](https://docs.nextgis.com/docs_ngcom/source/collector.html#collector-add-members) create a list of data collectors using names of the Team members added on step 3. Later when the data collection projects are set up, data collectors will be added from that list.
5. In NextGIS Web create a point vector layers that will store collected data. It can be done in the web interface ( [layer](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-vector-layer), [form](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form)) or with [NextGIS Formbuilder](https://nextgis.com/nextgis-formbuilder) by creating a data collection form. Remember that you’ll need to change the authorization [endpoint](https://docs.nextgis.com/docs_formbuilder/source/gui.html#on-premise-authorization) in Formbuilder from cloud (my.nextgis.com) to the on-premise deployment server.
———————–
Now you can set up projects for data collection. NGW has a special type of resource for that, **Collector Project**. You need to enter a resource name (it will be visible for data collectors in NextGIS Collector app and for the administrator in the NGW interface). You also have an option to add description and metadata.
1. Set up parameters in the tabs: **Project, Items, Collectors**. In the **Project** tab the administrator enters the credentials of an NGW user that will be utilized for adding the collected data to the database. By default it can be the *administrator* user given when NGW is deployed. But we recommend [creating](https://docs.nextgis.com/docs_ngweb/source/users.html#create-new-user) a special user for the purpose. In the **Items** tab add layers the data will be stored in and basemaps to make the collection process more handy. In the **Collectors** tab from the list (see step 4) select users who will have access to data collection in this project. Save the project parameters.
———————–
1. **Data Collector’s work** in [NextGIS Collector](https://docs.nextgis.com/docs_collector/source/index.html). First, data collector must change [authorization server](https://docs.nextgis.com/docs_collector/source/auth.html#via-on-premise-ngidop) to NGIDOP. After that the process is pretty standard for field data collection - log in using credentials given by the administrator (see Team section) and collect data. More on the functionality of the app in the [documentation](https://docs.nextgis.com/docs_collector/source/index.html).
———————–
Additionally, see how the data collection process works [in the cloud on nextgis.com](https://docs.nextgis.com/docs_ngcom/source/collector.html).
# data_connect.html.md
# How to connect data from external sources
[Web GIS](description.md#ngcom-description) supports connection of basemaps ([TMS](../../glossary.md#term-TMS) services) from external servers, vector geodata from external [PostGIS](../../glossary.md#term-PostGIS) databases and connection of vector and raster geodata from external [WMS](../../glossary.md#term-WMS) services.
## Basemaps
### Add a Basemap resource
1. Navigate to a Resource group where you want to create a basemap resource (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **Basemap**;
3. In the opened dialog, go to Resource tab and type a name for the new basemap in the field Display name. Then in Basemap tab fill in the field URL (if you know the correct link to [TMS](../../glossary.md#term-TMS) service) or start typing the name of the basemap in the field Search. If this basemap is found in [QuickMapServices](https://qms.nextgis.com/) catalog, the URL field will be filled in automatically and option “Use options from QMS” will be activated;
4. Press **Create** button. If Basemap is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
#### NOTE
We recommend creating a separate “Basemaps” Resource group to keep the basemaps to add your [Web maps](webmap_create.md#ngcom-webmap-create).
Find out how to add basemaps you’ve created to the Web map [here](webmap_create.md#ngcom-webmap-create).
## External PostGIS databases
### Create a PostGIS connection
1. Open Resource group where you want to create a connection (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **PostGIS connection**;
3. In the opened dialog, go to Resource tab and type a name for the new connection in the field Display name. Then in PostGIS connection tab fill in the fields Host, Database, User (if applicable) and Password (if applicable);
4. Press **Create** button. If PostGIS connection is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
### Create a PostGIS layer
1. Open Resource group where you want to create a data layer (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **PostGIS layer**;
3. In the opened dialog, go to Resource tab and type a name for the new layer in the field Display name. Then in PostGIS layer tab select [PostGIS connection](#ngcom-postgis-connection) and fill in the fields Schema, Table, ID column and Geometry column;
4. Press **Create** button. If PostGIS layer is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
Read more about connecting to external PostGIS databases here.
If you plan to display PostGIS layer on [Web map](webmap_create.md#ngcom-webmap-create) or publish it using [WMS](../../glossary.md#term-WMS) protocol, you need to create a [Style](styles.md#ngcom-styles) for it.
## External WMS services
#### NOTE
Currently supported WMS versions 1.1.1 and 1.3.0.
### Create a WMS connection
1. Open Resource group where you want to create a connection (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **WMS connection**;
3. In the opened dialog, go to Resource tab and type a name for the new connection in the field Display name. Then in WMS connection tab fill in the fields URL, Username (if applicable) and Password (if applicable) to connect to [WMS](../../glossary.md#term-WMS) server;
4. Press **Create** button. If WMS connection is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
#### WARNING
WMS server to which you connect must support EPSG:3857 [coordinate system](../../glossary.md#term-coordinate-system).
### Create a WMS layer
1. Open Resource group where you want to create a data layer (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **WMS layer**;
3. In the opened dialog, go to Resource tab and type a name for the new layer in the field Display name. Then in WMS layer tab select [WMS connection](#ngcom-wms-connection), image format and WMS layers you want to add to Web GIS;
4. Press **Create** button. If WMS layer is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
Read more about connecting to external WMS servers here.
## External TMS services
### Create a TMS connection
1. Open Resource group where you want to create a connection (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **TMS connection**;
3. In the opened dialog, go to Resource tab and type a name for the new connection in the field Display name. Then in TMS connection tab select the mode for connection with TMS server (Custom or NextGIS GeoServices) and enter URL template, API key parameters and tile scheme;
4. Press **Create** button. If TMS connection is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
### Create a TMS layer
1. Open Resource group where you want to create a data layer (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **TMS layer**;
3. In the opened dialog, go to Resource tab and type a name for the new layer in the field Display name. Then in the Tile cache tab choose cache settings, and in the TMS layer tab select the required TMS connection and set up display parameters;
4. Press **Create** button. If TMS layer is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
Read more about connecting to external TMS services here.
# data_services.html.md
# How to publish data using standard protocols
[Web GIS](description.md#ngcom-description) allows to publish uploaded and connected geodata using standard [WFS](../../glossary.md#term-WFS) and [WMS](../../glossary.md#term-WMS) protocols. In this case Web GIS acts like WFS(WFS-T)/WMS server.
## WMS service
1. Open Resource group where you want to create a service (by default from the main page of Web GIS you can access Main resource group);
2. Press **Create resource** and select **WMS service**;
3. In the opened dialog fill in the field Display name in Resource tab;
4. Go to WMS service tab and select those resources ([Styles](styles.md#ngcom-styles) or [WMS layers](data_connect.md#ngcom-wms-layer)) which you want to publish using WMS protocol. **You need to specify a keyname for each resource**;
5. Press **Create** button. If WMS service is created successfully you’ll see its name in Child resources pane of the relevant Resource group.
Read more about WMS service creation here.
## WFS service
WFS services are used to serve and edit vector layers hosted in Web. You can edit vector geodata using various desktop applications.
1. Open Resource group where you want to create a service (by default from the main page of Web GIS you can access Main resource group);
2. Press **Create resource** and select **WFS service**;
3. In the opened dialog fill in the field Display name in Resource tab;
4. Go to WFS service tab and select those resources ([Vector layers](data_upload.md#ngcom-vector-layer) or [PostGIS layers](data_connect.md#ngcom-postgis-layer)) which you want to publish using WFS protocol. **You need to specify a keyname for each layer**;
5. Press **Create** button. If WFS service is created successfully you’ll see its name in Child resources pane of the relevant Resource group.
WFS service link is not meant to be opened with a web browser. You need to copy and paste it in the WFS-capable client, such as for example [NextGIS QGIS](http://nextgis.com/nextgis-qgis/).
By default WFS service provides 1000 features. To increase this number change Default count of returned features value in WFS service tab.
You can also quickly create a WFS service with NextGIS Connect.
Read more about WFS service creation [here](../../docs_ngweb/source/services.md#ngw-wfs-service).
# data_types.html.md
# Which data formats and protocols are supported in Web GIS
[Web GIS](description.md#ngcom-description) allows to [upload](data_upload.md#ngcom-data-upload) and store geodata from local sources in the following spatial data formats:
* Raster - [GeoTIFF](../../glossary.md#term-GeoTIFF) (standard raster style supports files with 3 or 4 bands, RGB or RGBA, for other types you can use QGIS style);
* Vector - [ESRI Shape](../../glossary.md#term-ESRI-Shape), [GeoJSON](../../glossary.md#term-GeoJSON), [GeoPackage](../../glossary.md#term-GeoPackage), [GML](../../glossary.md#term-GML), [KML](../../glossary.md#term-KML), [CSV](../../glossary.md#term-CSV) or XLSX formats are supported. For [CSV](../../glossary.md#term-CSV) and [XLSX](../../glossary.md#term-XLSX) only points are supported, coordinates must be put in lat and lot columns.
Use NextGIS Connect if you need to upload data in other formats.
Web GIS also allows to [connect](data_connect.md#ngcom-data-connect) geodata from the following external sources:
* [TMS](../../glossary.md#term-TMS) services;
* [PostGIS](../../glossary.md#term-PostGIS) databases;
* [WMS](../../glossary.md#term-WMS) services (WMS server should support [coordinate system](../../glossary.md#term-coordinate-system) EPSG:3857).
You can add images (including photos) to vector geodata from local and external sources. Image files should be in JPEG or PNG format. Read more [here](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-add-photos/).
You can also publish uploaded or connected to your Web GIS geodata using [WFS](../../glossary.md#term-WFS) (with feature update support) and [WMS](../../glossary.md#term-WMS) protocols. Read more [here](data_services.md#ngcom-data-services).
Vector geodata from local and external sources can be exported as [GeoJSON](../../glossary.md#term-GeoJSON) and [CSV](../../glossary.md#term-CSV) files. Read more here.
# data_upload.html.md
# How to upload data
Raster and vector geodata are uploaded to [Web GIS](description.md#ngcom-description) by creating [Raster layer](#ngcom-raster-layer) and [Vector layer](#ngcom-vector-layer) resources respectively.
#### NOTE
The size limit for uploaded files depends on the selected plan. For **Premium** - 50 GiB, for **Free** - 5 GiB and **Mini** - 10 GiB.
## Quick preview
To quickly view the downloaded data - click on the **Preview** button on the right menu in the **Additional** section.
#### NOTE
For vector data, previews are available for both the layer and the style. For rasters - for style only. For TMS and WFS layers, preview is also available.
The preview function in the frontend is described [here](https://docs.nextgis.com/docs_ngweb/source/layers.html#data-preview)
## Raster data
### Input data requirements
* Supported format: [GeoTIFF](../../glossary.md#term-GeoTIFF)
* Inputs must be geographically referenced and have correctly set CRS description as GeoTIFF metadata.
### Creating raster layer
1. Open the [Resource group](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#create-resource-group-to-manage-data) where you want to create a data layer (by default the main page of Web GIS has Main resource group displayed);
2. Press **Create resource** and select **Raster layer**;
3. In the opened dialog, go to Resource tab and type a name for the new layer in the field Display name. Then go to Raster layer tab and select a file with raster geodata;
4. Press Create button. If Raster layer is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
If you plan to add this raster to QGIS directly from your Web GIS, turn on Upload as Cloud Optimized GeoTIFF (COG) checkbox.
#### IMPORTANT
If you plan to display the Raster layer on a [Web Map](webmap_create.md#ngcom-webmap-create) or publish it using [WMS](../../glossary.md#term-WMS) protocol, you need to create a [Style](https://docs.nextgis.com/docs_ngcom/source/styles.html#ngcom-styles) for it first.

Read more about upload of raster geodata to Web GIS [here](../../docs_ngweb/source/layers.md#ngw-create-raster-layer).
#### SEE ALSO
If you need to upload large rasters, here’s [how to calculate if you have enough storage](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-raster-volume)
## Vector data
### Input data requirements
Supported formats: ESRI Shapefile (zip-archived, no sub-folders, no sub-archives, one zip - one layer), GeoPackage, GeoJSON, GML, KML, CSV or XLSX. For CSV and XLSX only points are supported, coordinates must be in lat and lon columns.
Use NextGIS Connect if you need to upload data in other formats.
#### WARNING
Avoid using Unicode symbols in data field names. While such data can be uploaded, you may experience problems working with it via WFS, in NextGIS Mobile or visualization (especially if styles are using such fields). Use plain Latin for field names and set up field aliases to show Unicode names.
### Creating vector layer
1. Open [Resource group](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#create-resource-group-to-manage-data) where you want to create a data layer (by default from the main page of Web GIS you can access Main resource group);
2. Press **Create resource** and select **Vector layer**;
3. In the opened dialog, go to Vector layer tab and select a file with vector geodata or select geometry type for an empty vector layer;
4. Then in Resource tab type a name for the new layer in the field Display name.
5. Press Create button. If Vector layer is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
#### IMPORTANT
If you plan to display Vector layer on a [Web Map](webmap_create.md#ngcom-webmap-create) or publish it using [WMS](../../glossary.md#term-WMS) protocol you need to add a [Style](styles.md#ngcom-styles) for it first.

Web GIS can process multy-layer datasets. If an archive contains several layers, then after it is uploaded, you will be asked to select which layer will be used for creating Vector layer resource.
Read more about upload of vector geodata to Web GIS [here](../../docs_ngweb/source/layers.md#ngw-create-vector-layer).
#### NOTE
You can also upload raster and vector geodata to Web GIS with QGIS.
# deminpoints.html.md
# Extract elevations from DEM
The extraction of elevations from DEM. Returns CSV with coordinates and altitude.
Inputs:
* ZIP-compressed CSV - CSV table with coordinates of points. Delimiter should be comma. Corrdinates are floating values. File should not have spaces and should contain only latin symbols. [How to prepare the file in QGIS](https://toolbox.nextgis.com/t/deminpoints#prepare).
* Latitude - name of the Latitude column. Case-sensitive.
* Longitude - name of the Lonitude column. Case-sensitive.
* Output format:
- CSV
- ESRI Shapefile
- MapInfo TAB
- GeoJSON
- GPKG
- DXF
- FlatGeobuf.
* Elevation dataset - select one of the following:
- Copernicus
- ALOS - ALOS World 3D has resolution of 30 meters
- MERITDEM
- GEBCO - resolution is 15 sec (about 500 meters).
Outputs:
* CSV file or ZIP-compressed file of other selected format with coordinates and elevation values for the points.
## How to prepare data
To save a point layer as a CSV file with coordinates in QGIS, go to Layer –> Save as. In the Format field select “Comma separated values.
In the **Layer options** section select for the GEOMETRY field the option `AS_XY`. The resulting file will have longitude in the X column and latitude in Y column.

Launch the tool: [https://toolbox.nextgis.com/t/demInPoints](https://toolbox.nextgis.com/t/demInPoints)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# demoprojects.html.md
# Demo projects
These projects showcase the capabilities of NextGIS Web, allowing you to get acquainted with its features. If you’ve set up a Web GIS and wish to test the platform but don’t know where to begin, try out the demo projects.
To access demo projects go to the main page of **your Web GIS** and log in as a user with **administrator** access. You can open the demo projects page in one of two ways:
* From the actions pane on the right
* Using the button below the list of Web GIS resources

## What you can do with demo projects
Every project has two buttons (see [Fig. 39.](#demo-project-main-pic)):
1. Open as read-only
2. Clone for me

The projects include ready-made layers, styles, and maps. It demonstrates how various types of data are displayed in a Web GIS.
Click **Clone for me** to create a copy of the selected project in the main resource group of your Web GIS.

When you clone a demo project, it is yours to edit, reset or delete (see [Fig. 40.](#demo-project-cloned-pic)).
In the list of your Web GIS resources the folder of the cloned demo project is marked with a lab flask icon.

# description.html.md
# Web GIS: Description and Main Features
Web GIS is an information system for geodata storage and geodata management through admin web console or [API](../../glossary.md#term-API).
Web GIS allows you to:
* Upload and store raster and vector geodata;
* Connect geodata from external databases and geoservices;
* Visualize geodata on web maps and publish it using standard protocols;
* Customize map styles for your geodata;
* Edit attributes, add descriptions and photos of your geodata;
* Manage geodata with mobile app [NextGIS Mobile](http://nextgis.com/nextgis-mobile/) and desktop app [NextGIS QGIS](http://nextgis.com/nextgis-qgis/);
* Create end-user applications using NextGIS API.
Watch on [youtube](https://youtu.be/dsx-xo3McIo?si=Oo7lX8_FXiCdM2Nz).
# devtools.html.md
# QGIS DevTools — debugging QGIS plugins
#### NOTE
Qt6 compatible
## Preface
Developing QGIS plugins is a powerful way to extend the functionality of one of the world’s leading open-source GIS platforms.
But despite the flexibility of Python and QGIS’s API, one thing has long been missing from the developer experience: an efficient, modern debugging workflow.
For many plugin developers, the standard method of debugging involves printing to the console or using workarounds to attach debuggers manually.
This process is slow and often frustrating, especially when dealing with complex logic or UI interactions.
That’s why we built a tool to bridge the gap. **QGIS DevTools** is a QGIS plugin that enables smooth integration with Visual Studio Code, one of the most widely used and feature-rich development environments.
With this plugin, developers can set breakpoints, inspect variables, and step through code directly from Visual Studio Code.
Thanks to its modular architecture, the plugin can be extended to support other IDEs like PyCharm or Eclipse in the future, as well as additional development scenarios beyond debugging.
In this article, we’ll introduce the plugin and show how it can streamline and modernize your QGIS plugin development workflow.
## Set up QGIS
### Install dependencies
DevTools uses debugpy as the underlying library, so you need to install it first. If you are Windows user, we recommend to use OSGeo4W installation of QGIS for plugin development.
You can add debugpy installation to your build in Libs category.

If you are a Linux user, you can install python3-debugpy using your OS package manager. For example:
```bash
apt get install python3-debugpy
```
If you want to use flatpak for Linux:
```bash
flatpak run --devel --command=pip3 org.qgis.qgis install --user debugpy
```
For MacOS:
```bash
/Applications/QGIS.app/Contents/MacOS/bin/python3 -m pip install debugpy
```
### Install QGIS DevTools
After that you could install QGIS DevTools from standard plugins repository (Plugins — Manage and install plugins — All — QGIS DevTools)

Installed plugin management is available via small bug icon  in the right bottom part of the QGIS interface.

Plugin settings are also available in menu Plugins — QGIS DevTools.
### QGIS DevTools settings
In settings you could select debug adapter (currently supports only debugpy for Visual Studio Code and Visual Studio, more to come),
set if you want to enable debugger on QGIS startup and show notification on debugger start.
Enabling the debugger leads to activating the local server app.
In the Adapter settings block you could set up hostname and port(s) for this server.
Selecting range instead of single value for Port would allow you to run several QGIS instances with active debuggers simultaneously.

## Install Python debugger extension in VS Code
**Python debugger** extension for VS Code is needed. Go to Extensions tab (Ctrl+Shift+X), search for Python debugger and install it.
Then restart VS Code.

## Debug a plugin
### Prepare
For example we will debug the OSMInfo QGIS plugin, which could be installed from the standard plugins repository. You could try the same path, or use your own plugin.
To copy the plugin’s location, it is convenient to simply right click on the Installed version number in the plugins manager and press the Copy link button.

Open the whole plugin directory in VS Code using File — Open Folder and paste copied path, then open folder.
Next step is to create an empty **.vscode/launch.json** file in plugins directory root.

Return to QGIS and press the Start button in the DevTools panel.

After that you will see the standard QGIS blue notification about started session, with Copy launch.json template button.

Press it, and paste copied template to **.vscode/launch.json** file created before.

If the code file is stored in a separate directory, not in the one it’s run from, you need to configure a path for it.
In pasted code, in configurations/pathMappings/remoteRoot element replace text to plugin’s directory name, in example case **osminfo**.

After that switch to the Run & Debug tab (Ctrl + Shift + D) and run **Attach to QGIS**.

Debug session is active now. On VS Code side you should see a panel with debugging commands:

On QGIS side you should see, that DevTools icon changed it’s color to green, and status changed to “client connected”.

We are ready for debugging now.
### Plugin debugging process
All VS Code debug workflows are now available, you could find detailed information here: [https://code.visualstudio.com/docs/python/debugging](https://code.visualstudio.com/docs/python/debugging)
Let’s try some simple things. Open osminfotool.py file, find row 97 and add breakpoint to it by pushing the red circle left to row number.

We asked the debugger to stop when reaching this row of code.
In the plugin’s code this place is about actions after clicking on map.
Switch to QGIS, select OSMInfo tool and click to any location on the map.
Interface freezes — it is correct behaviour, the debugger stopped the process.
In VS Code you can see that the breakpoint was reached.
In the variables panel you could explore all currently available variables used in the plugin.
You could also use all these variables in Debug console, for example ask for mouse click coordinate with
```bash
e.pos().x()
```

After that, using debug panel  you could move to the next code row or next breakpoint. These tools make the process of understanding what happens in the plugin much easier. Happy debugging!
## Debug a script
### Prepare
To debug a script, follow these steps:
1. In VSCode open the folder where the script is stored using File — Open Folder.
2. Open the script in QGIS editor: Plugins → Python Console → Show Editor → Open Script.
3. Press the **Debug script** button in the script editor panel. This will start the Python debugging server in QGIS if it has not been started previously and will wait for VS Code to connect for debugging.

1. Copy launch.json template by clicking the corresponding button in the dialog that appears.

1. As the next step, return to VS Code and create a .vscode subdirectory in the script directory, then add an empty launch.json file inside it.

1. Paste copied template to .vscode/launch.json and save the file

Now you can start the debugging.
### Script debugging process
1. Add breakpoints to the script.

1. After that switch to the Run & Debug tab (Ctrl + Shift + D) and run Attach to QGIS.

Debug session is active now. On VS Code side you should see a panel with debugging commands:

On QGIS side you should see, that DevTools icon changed it’s color to green, and status changed to “client connected”.

When the script execution reaches a breakpoint, you will see the current variables and their contents.

## Conclusion
We hope that QGIS DevTools will make the lives of plugin developers easier.
Based on community requests, we plan to expand the list of supported IDEs and development support mechanisms in general.
Feel free to share your thoughts and feedback!
# dezhurcad.html.md
# Rosreestr extracts to map
The tool converts extracts from [Rosreestr](https://rosreestr.gov.ru) to web map with one-direction sync. During next runs script detects changes in vector features and updates or appends new features if the extract has a later date. Features are not deleted.
#### IMPORTANT
Only features with recognized SRS are displayed on the map. Features will not be displayed if they are without geometry, SRS could not be determineded, coordinates do not correspond to the SRS specified in XML file, or they not fall within the boundaries of cadastral unit. The number of missed/processed features is displayed in the form of a report.
Input:
* Rosreestr extract - one xml or zip
* Web GIS link, example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com)
* Administrator or other Web GIS user login. User must have writing access
* User password
* Resource group id for data. User must create group only before very first run
Output:
* Layers and web map.
Launch the tool: [https://toolbox.nextgis.com/t/Dezhurcad](https://toolbox.nextgis.com/t/Dezhurcad)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# digitizr.html.md
# Digitizr
This plugin allows you to digitize a line and have a buffer around it immediately at set width stored in a polygonal layer.
1. Install plugin
2. Select a polygon layer and enter edit mode.
3. Activate the plugin from the toolbar ( button)
1. To create a line left-click on map on at least two points.
2. To complete the line right-click on the last point. The line is automatically transformed into a polygon.

In the drop-down plugin menu you can select the style of caps and joins.
In the field to the right of the button you can change the buffer width.
See how the plugin works in our video:
Watch on [youtube](https://youtu.be/NkXZHwDUV0M?si=dWKCoYaXKTqxshqo).
# district.html.md
# How to get municipal boundaries for a target region
* [Order data](https://data.nextgis.com/en/) for your area of interest, for example in GeoPackage format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Launch QGIS and in the main menu select “Layer” > “Add Layer” > “Add Vector Layer…”. In a pop-up window from downloaded folder “data” select file “boundary-polygon-land-lvl6”.

* Municipalities’ boundaries are imported in GIS.

* If you want municipalities to be shown as outlines, right-click on a layer and select “Properties”. In pop-up window select Symbology > Simple fill > Fill style=“No Brush” and press **Apply**.

#### NOTE
Types and levels of administrative boundaries differ from country to country. Thus file “boundary-polygon-land-lvl6” can refer to various levels of administrative division, depending on particular country. To find out about your area of interest please check [here](https://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative).
# doc2pdf.html.md
# DOC(X) to PDF
Convert DOC(X) to PDF with templating support.
Inputs:
* Input DOC(X). Select DOC or DOCX file.
* Input data file. Select JSON file corresponding to template values. To view an example template, click **Demo** and donwload the input JSON file.
Outputs:
* PDF file
Launch the tool: [https://toolbox.nextgis.com/t/doc2pdf](https://toolbox.nextgis.com/t/doc2pdf)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# domain.html.md
# How to change Web GIS domain
#### NOTE
This functionality is available only to nextgis.com [Premium users](http://nextgis.com/nextgis-com/plans).
After you created a Web GIS you get a domain at nextgis.com, for example *mywebgis.nextgis.com*. You can rename it to something else, i.e. *mywebgis2.nextgis.com* by contacting support.
You can also change it to a subdomain under the domain of your organization, for example *gis.example.com* where example.com is the domain of your organization. We will use these two addresses in the examples below.
#### NOTE
You can’t use your organization domain itself (mycompany.com) as Web GIS domain. It is impossible to add CNAME record in the DNS zone root with most of the providers.
Follow these steps to change the domain name. The described actions are done by the system administrator of your company or another authorized person who has access to DNS records.
**Step 1. Add DNS record to get HTTPS certificates**
```bash
_acme-challenge.gis.example.com. CNAME _acme-challenge.nimbo.nextgis.net.
```
change *gis.example.com* in this record to the needed domain under the domain of your organization.
**Check 1**
Your system administrator needs to check that changes took effect. Use [Dig](https://toolbox.googleapps.com/apps/dig/#CNAME/).
Enter: \_acme-challenge.gis.example.com.
Expected answer: CNAME (TTL and TARGET).
TARGET must have the following value: \_acme-challenge.nimbo.nextgis.net.
Give some time for DNS changes to take effect.
**Step 2. Add DNS record 2 to redirect requests to Web GIS**
```bash
gis.example.com. CNAME example.nextgis.com.
```
change *gis.example.com* to the needed domain under the domain of your organization, change *example.nextgis.com* to your Web GIS address at \*.nextgis.com
**Check 2**
Your system administrator needs to check that changes took effect. Use [Dig](https://toolbox.googleapps.com/apps/dig/#CNAME/).
Enter: gis.example.com
Expected answer: CNAME (TTL and TARGET).
TARGET must have the following value: mywebgis.nextgis.com.
Give some time for DNS changes to take an effect.
**Step 3. Inform us**
After both checks are successful, let us know at [support@nextgis.com](mailto:support@nextgis.com). Please use the following template:
1. Your Web GIS URL: *mywebgis.nextgis.com*
2. Domain you want to switch to: *gis.example.com*
We will finalize the setup and contact you when everything is ready.
# download_and_prepare_l8_s2.html.md
# Prepare and download Sentinel-2 data
The tool downloads source data, prepares Sentinel-2 data and provides link to download the result.
Supported ID types are Copernicus, GoogleCloud and MPC (L2A only).
You can get ID for Copernicus catalog:
* using the tool [Copernicus Sentinel image search](https://toolbox.nextgis.com/t/imagesearch) or [Sentinel-2 scenes to GPKG](https://toolbox.nextgis.com/t/s2_search);
* on [https://dataspace.copernicus.eu](https://dataspace.copernicus.eu): sign up, find an image for your area of interest and copy its ID.
Inputs:
* Scene identifier of Sentinel-2 (Level 1C and Level 2A).
* Vector mask to clip the image. The format is GeoJSON, ESRI Shape (in a ZIP-archive) or any other OGR-compatible single-file format. If you don’t need to clip the scene, leave this field empty.
* A list of bands. A comma separated list of numbers. The bands will be merged in the specified order, for example 4,3,2. Leave this field empty to merge all bands.
* Output spatial resolution of the scene, in meters. Leave this field empty for original spatial resolution. If number is set, then all bands will be upscaled or downscaled to it using cubic interpolation. The example of interpolation is available [here](https://docs.nextgis.com/_images/download_and_prepare_l8_s2.png).
Outputs:
* GeoTIFF output image
Launch the tool: [https://toolbox.nextgis.com/t/download_and_prepare_l8_s2](https://toolbox.nextgis.com/t/download_and_prepare_l8_s2)
Watch on [youtube](https://youtu.be/avKvKrsjDSI?si=sJZqD5IEeZmJOxIJ).

View the result on an interactive map: [https://demo.nextgis.com/resource/4805/display?panel=layers](https://demo.nextgis.com/resource/4805/display?panel=layers)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
#### NOTE
You can download previews of the scenes using the gool [Sentinel-2 scenes to GPKG](https://toolbox.nextgis.com/t/s2_search) to determine for which of them to download the full raster images.
# download_glad.html.md
# Download Landsat Analysis Ready Data (GLAD ARD)
Generates commands to download Landsat Analysis Ready Data (GLAD ARD, [https://glad.umd.edu/ard/home](https://glad.umd.edu/ard/home)).
The source data is organized as follows:
ARD tile name contains the coordinates of the bottom left corner of the grid cell. You can see the online interactive [grid](https://demo.nextgis.com/resource/9192/display?panel=layers).

Data collected in a 16-day interval are consolidated into a single ARD composite. The intervals are numbered consecutively since 1997. See the IDs of the intervals intersecting with your period of interest in the [`table`](https://glad.umd.edu/users/Potapov/ARD/16d_intervals.xlsx).
Inputs:
* CSV file containing a list of tile names, i.e. `006E_46N`;
* Starting interval - ID of the first 16-day interval intersecting with your period of interest;
* Ending interval - ID of the last 16-day interval of your period of interest.
Outputs:
* Windows batch file for downloading with Powershell. No additional tools required;
* Windows batch file for downloading with AWS (same data, different server). AWS CLI installation is required [https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html);
* TXT file containing a list of urls for downloading with wget, curl or similar tools.
Launch the tool: [https://toolbox.nextgis.com/t/download_glad](https://toolbox.nextgis.com/t/download_glad)
Example data downloaded using the BAT file provided by the tool.

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# dumploadfield.html.md
# DumpLoadField
Fill in string fields of a vector layer from a text file. This plugin is helpful when you need to fill in an empty field or replace values of a field.
Also DumpLoadField can save the contents of a field from an attribute table as TXT file.
After installation you can find the plugin in the Vector menu.
## Add text field to vector layer attributes
1. Create a new string field in the vector layer attribute table. Save the changes.
2. Open the plugin from Vector ‣ DumpLoadField ‣ Load to a field.
3. Select the field you want to fill in.
4. Select a TXT file. In the file the text rows must be in the same order as the layer features.
## Download text values of an attribute
1. Open the layer in QGIS.
2. In the Menu bar select Vector ‣ DumpLoadField ‣ Dump a field.
3. Select the field the contents of which you want to save.
4. Enter a name for the output file.
The values of the string field will be saved to a TXT file.
Check out how the plugin works in our video:
Watch on [youtube](https://youtu.be/gjQCkNLbxUg?si=L7bfWabH0QHMMsVh).
# easyquery.html.md
# NextGIS EasyQuery
The NextGIS EasyQuery plugin is designed for quick search and filtering of objects in vector layers.
It is a simplified and intuitive visual query builder with which you can:
- Select the desired vector layer
- Configure simple conditions for filtering objects by attribute data
- Define query mode
- Save the selection result to a separate temporary layer or select it in the current vector layer
More information can be found in the “About”.

## Installation
To install or update this plugin, you need to find it in the menu Plugins ‣ Manage and install plugins.
Enter part or all of its name in the Search bar (see [Fig. 824.](#setup-en)).

Select **NextGIS EasyQuery** from the list and select Install Module.
After installing the extension, an icon appears on the toolbar .
## Usage
1. Click on the icon of the installed plugin. You can also open the module through the top menu Vector ‣ NextGIS EasyQuery
2. Select the vector layer whose features you want to query. The layers in the list are taken from the project, so the data needs to be added to QGIS beforehand.
3. Add the condition you need - choose the field to select, the operator and the value you are looking for. There can be several conditions, you can add and remove them.

1. Set the query mode. If you set several conditions, you can specify whether at least one of them or all of them must be fulfilled at once.

#### IMPORTANT
For number field types, values from the list corresponding to **percentage intervals** of 25%, 50%, and 75% will be suggested, not all available values in the current table field.
1. Select the type of result you want. Objects can be either selected in the current layer or saved to a special temporary layer.

1. Optionally, set the checkbox so that the query result is automatically zoomed in on the map.
2. Start execution

See how the plugin works in our video:
Watch on [youtube](https://youtu.be/GkK-hHRTwsc?si=l9rWkIqQ1MHTXdAo).
# edit.html.md
# Edit data
NextGIS Connect plugin allows to quickly edit geometries and attribute values of features in Web GIS Vector layers right after adding them to QGIS. This allows the layer to be edited even with no Internet connection. The changes will be saved to the device and transfered to Web GIS when the connection is restored.
This functionality is only available for vector data formats used in QGIS.
#### WARNING
By default only one user at a time can edit the layer **directly**.
1. Import the layer from Web GIS to QGIS by selecting it in NextGIS Connect and pressing  Add to QGIS.
2. Enter the edit mode from the layer’s context menu or from the toolbar.
3. Make the changes.
4. Exit edit mode. Confirm changes in the pop-up window.
5. The layer will be automatically synchronized.
To check when the layer was last synchronized, hover over the sync symbol.

Press the symbol to open the layer status window.

It has the date and time of the latest synchronization and the status: synchronized or not synchronized.
You can start the process manually by pressing the **Synchronization** button.
#### IMPORTANT
While the layer is in edit mode, synchronization is not available.
If changes have been made to the layer in Web GIS since the last synchronization, further synchronization will not be possible. [Reset the layer](https://docs.nextgis.com/docs_ngconnect/source/edit.html#reset-layer) to make synchronization possible again.
If the edits made in the cloud were incorrect and you need to replace them with local ones, you can use the [Data overwrite](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-data-overwrite) function.
Only the data itself is synchronized. See how to [change the layer structure](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-add-field) to keep the synchronization available.
## Multi user editing
Layers can be edited by several people at once or from several different devices/platforms by one or several users. The edits can be made simultaneously or at different times. Here are some common scenarios:
1. One user edits features in QGIS, on the Web Map and in a mobile app.
2. Several users edit the same layer in QGIS.
3. Several users edit the same layer in all possible ways.
If your workflow is close to this, you have two main options:
1. Enable [versioning](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic) for the vector layers that are going to be edited. You can turn on versioning in the layer’s settings in Web GIS. When versioning is on, all changes made to the layer are logged in the system. That allows Connect to access edits made on other devices and process them without resetting the layer.
2. Use [OGC API — Features](../../glossary.md#term-1) or [WFS](../../glossary.md#term-WFS) services. You can create them in Web GIS ([WFS](https://docs.nextgis.com/docs_ngweb/source/layers.html#services.html#ngw-create-service-wfs), [OGC API — Features](https://docs.nextgis.com/docs_ngweb/source/services.html#ngw-ogc-api-features)) or directly in the [Connect plugin](https://docs.nextgis.com/docs_ngconnect/source/manage.html#create-service) and then use them to edit data.
If only one user edits the data from the same interface (e.g. from QGIS), you don’t need versioning.
## Resolve edit confilcts
[Versioning](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic) allows multiple users to edit a layer from different devices at the same time, via QGIS or Web interface. If two users try to make different changes to the same feature, then before saving the changes NextGIS Connect plugin detects an edit conflict and shows a dialog to resolve it.

All the features that have conflicting edits are listed on the left.
For each of the features you can view the attribute values and geometry preview. Conflicting changes are marked by yellow dots. The local changes are shown on the left and the changes saved on the server after you entered the editing mode are shown on the right.
Select the correct option for each conflict individually or apply all the local or server changes at once using buttons in the bottom left corner.
The final version is displayed in the middle, in the Result column. Resolved conflicts are marked by green dots. When all the edit conflicts of a feature are resolved, the question mark next to it changes to a green tick.

## Change layer structure
If you want to add/remove fields of a versioned vector layer, added to QGIS from Web GIS cloud storage, make sure to do it this way:
1. Important! Save all changes made to the layer in QGIS.
2. Modify the layer structure in Web GIS.
3. Go to the layer’s sync dialog, click the downward arrow by the “Synchronization” button and in the dropdown menu select **Reset layer**.
4. Now you can continue editing the data.
When you add a layer from Web GIS to QGIS, the structure of the layer is stored in the cache. So if you delete the layer from QGIS, you only remove the legen item, but the cache stays intact. When you try to add the layer again after changing its structure in Web GIS, it clashes with the cached structure ending up in error.
### Reset layer
When you reset the layer via sync dialog, you update the cached structure. This way the cached structure matches the one in the cloud allowing you to continue editing and synchronizing the data.
To reset a layer, click on the sync symbol (see `ngc-check-sync-pic`). “Layer status” window will open. Click the downward arrow by the “Synchronization” button and in the dropdown menu select **Reset layer**.

Keep in mind that if you reset the layer, all local changes that had not been synchronized will be lost.
## Edit layer with WFS
You can also edit a vector layer using the standard [WFS](../../glossary.md#term-WFS) protocol (with feature edit support):
* Publish via WFS protocol the Vector layer you’re going to edit;
* Select in NextGIS Connect Resources panel the relevant WFS service;
* Press  Add to QGIS button on NextGIS Connect control panel or select **Add to QGIS** in the service context menu;

* If the operation is successful you’ll see in QGIS Layers panel a new group of WFS layers published via the selected WFS service;
* Enter Edit mode and modify geometries and attributes in the added WFS layer using standard QGIS tools;

* Press the “Edit” button to finish editing and press “Save” in the opened window.

* If the editing was successful, you’ll be able to see the changes in the Web GIS at once, both in the [Feature table](../../docs_ngweb/source/admin_interface.md#ngw-feature-table) and on the Web Map [web client](../../docs_ngweb/source/webmaps_client.md#ngw-webmaps-client).
## Update data
NextGIS Connect allows you to update the content of an existing Web GIS vector layer keeping its styles, attribute aliases and other settings.
#### WARNING
When a **layer** is updated, all data of the target layer including attachments (photos, documents) is cleared. If you need to keep the attachments intact, use [WFS](https://docs.nextgis.com/docs_ngconnect/source/resources.html#wfs). When you update a [style](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-style-overwrite), it does not affect attachments.
To update (overwrite) layer’s data:
* In the QGIS Layers panel, select the vector layer that has features you want to send to an existing Web GIS vector layer;
* In the NextGIS Connect panel select the vector layer , select the vector layer the contents of which you need to replace;
* Right click on the target layer and choose **Overwrite selected layer**.
Layer resource ID stays the same.

You can also edit features [directly](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-data-edit) or via [WFS](https://docs.nextgis.com/docs_ngconnect/source/edit.html#connect-data-edit-wfs).
## Update style
You can add another style to a layer or replace its existing style with a new one. When a style is updated, the NextGIS Connect module removes the old style of the layer from the Web GIS and loads the new one leaving all data and attachments intact.
* Add layer to QGIS via Connect;
* Change the style of the layer (color, line width, etc.);
* Select the layer in QGIS Layers panel as well as in the Connect panel.
* In Connect toolbar press  Add to Web GIS and in the dropdown menu select “Add new style to layer” or “Update style”.

To update layer’s style you don’t need to select a specific one.
1. If the layer has only one style, this style is updated;
2. If the layer has multiple styles, selection dialog appears;
3. If the layer has no style, the style is added to it.

This operation is also available in the layer’s context menu in QGIS Layers panel: NextGIS Connect ‣ Add new style to layer / Update layer style.

### How to keep attachments
To **keep the photos** intact while modifying the style, perform the following steps:
1. Add the layer’s style from Web GIS to QGIS using NextGIS Connect.
2. Modify the style.
3. Update the style using NextGIS Connect.

## Copy style from Web GIS
With Connect you can copy QML style from Web GIS and apply it to a local style in QGIS.
Watch on [youtube](https://youtu.be/bmba3qqgTmM?si=dZMBmZyPSXojFgiY).
Click on the layer in the Connect panel to view the styles and right-click on the QML-style. Select “Copy style” in the context menu. Then in the QGIS Layers panel paste style via context menu as usual.

# edit_resource.html.md
# Update resource
In the group page press the pencil icon opposite the resource.

Alternatively, open the resource properties page and then select “Update” in the actions pane (see [Fig. 354.](#ngw-window-update-edit-resource)).

In opened window “Update resource” (see [Fig. 355.](#ngw-window-update-resource1)) you can
* move the resource to a different parent resource,
* add [description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#edit-description-and-metadata);
* configure [access permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html).
Depending on the resource type there are other tabs, e.g. for vector layers you can edit [attribute fields](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#edit-vector-layer-attributes-table).

Some tabs have grey numbers on them indicated the number of items (i.e. permission rules, layer fields etc).
Tabs that were modified are marked by blue dots.
On the first tab “Resource” you can edit the following fields:
1. Display name (you can change the resource’s name)
2. Parent (you can change the resource group through moving the resource)
3. Owner
4. Keyname
## Move resource
You can move resources from one resource group to another.
There are two ways to do so.
### Using resource update
This is a good way if you only need to move one resource.
1. Open the Properties page of a resource you want to transfer;
2. Select Action ‣ Update on the right side of Web GIS [admin console](admin_interface.md#ngw-admin-interface);
3. In the opened dialog window in the field Parent in Resource tab select Resource group you want to transfer your resource to;
4. Press Save button. If a resource is transferred successfully its name will appear in the new Resource group and disappear from the previous Resource group.

In the same way you can transfer [Styles](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html) between parent resources ([Vector and raster layers](https://docs.nextgis.com/docs_ngweb/source/layers.html), [PostGIS layers](https://docs.nextgis.com/docs_ngweb/source/postgis_details.html)).
### Using multiple selection
This way allows you to move several resources at once.
Open the group containing the resources you’d like to move. In the Child Resources list click the three dots in the upper right corner and in the menu press “Select multiple resources”.

Boxes will appear to the right of the resource names in the list. Tick them to mark resources for transfer. If you tick the box by the “Display name” title, all resources in the list will be selected.
After selecting the resources, open the menu again and press “Move”.

A pop-up window of group selection will open.
In this window you can use a search bar. Click the magnifying glass in the top left corner and start entering the name of the group you want to find.
To go up in the resource tree, click the path indicated in the top panel of the window. To open a folder from the list, click the arrow icon on the right.
If you want to return to the source group, click the icon **|<** in the top right corner.
To select the group as the destination, click the circle to the left of its name, a blue dot marker will appear. Then press “Move to selected group”. To move resources to the main group, click on the house icon in the top panel of the pop-up window and then press “Move to this group”.

If in the selected folder there are already resources with the same name as those you want to transfer, they will not be moved and the following message will appear:

Close the alert window, change the name of one of the resources and try to move it again.
If a resource is transferred successfully its name will appear in the new Resource group and disappear from the previous Resource group.
See how it works in our video:
Watch on [youtube](https://youtu.be/-87-azrgakw?si=xO3STGS1DgZiiQR_).
## Delete resource
Web GIS allows to delete uploaded data through deleting of the corresponding resources.
In the group page press the cross icon opposite the resource.

A pop-up window for confirmation will appear. Click **Delete** to confirm.

Alternatively, open the resource page and then select “Delete” in the actions pane (see [Fig. 363.](#ngw-window-update-delete-resource)).

In the opened “Delete resource” window you need to tick “Confirm deletion of the resource” and press **Delete** button.

If the resource was deleted successfully, the information about it disappear from the corresponding resource group.
When a resource is deleted, all its subresources also get deleted. Before confirming deletion you’ll see a warning about the number of resources of each type that are about to be deleted:

If you selected “Delete” action from the resource page and not from the resource list, the name of the selected resource will be in the path above.

You can also delete resources in your Web GIS [from QGIS using NextGIS Connect plugin](https://docs.nextgis.com/docs_ngconnect/source/manage.html#connect-resource-delete).
### Deleting several resources at once
In the parent resource open the child resources list menu and enable multiple selection.
Tick the resources and select “Delete” from the same menu. Confirm the operation in the pop-up window.

## Edit description and metadata
The “Description” tab allows to add text, links and images describing the resource.

The “Metadata” tab allows to add and delete metadata, and to display them in a table using **Add** and **Remove** operations:

The table contains three columns:
1. Key. It allows to describe metadata features (author, date, version etc.)
2. Type: String, Numer, Boolean, Empty (if you select “Empty”, the value field will be cleared)
3. Value. Value corresponds to the key type
Typically, metadata is used to develop third-party applications using [API](https://docs.nextgis.com/docs_ngweb_dev/doc/developer/toc.html).
## Keyname for API integrations
On the Resource tab you can enter a unique Key for the resource to identify the resource in program code.
Key requirements:
* Plain latin symbols and numbers;
* The first symbol must be a letter.
In QGIS you can search a resource by its key via [NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-filter-expression).
# editing.html.md
# Editing layers
NextGIS Mobile allows you to edit vector layers added to the map. While editing, you can:
* add new features;
* delete features;
* edit features.
## Switching to Edit mode
There are several ways to switch to Edit mode.
1. The first way is Main actions button (the big blue button in the right bottom corner of map screen). Pressing Main actions button opens a menu of most common actions (see [Fig. 985.](#ngmobile-common-action-menu-pic)).

You need to tap the pencil button (item 6 in [Fig. 985.](#ngmobile-common-action-menu-pic)) to switch to Edit mode.
Then select a vector layer you want to edit in an opened dialog (see [Fig. 986.](#ngmobile-select-layer-dialogtch-pic)).

1. The second way to switch to Edit mode is to long-press the feature on the Map. This will activate Edit mode for the layer which includes this feature. (A short press will activate a similar menu, but only the “info” icon will be available.) If there are multiple overlaying features, a list will appear. Select the layer you wish to edit from that list.
2. The third way is to open Layers tree panel (item 1 in [Fig. 943.](main.md#ngmobile-main-activity-pic-1)) and tap on Layer contextual menu icon next to the vector layer name . This will open the contextual menu items. There you need to select “Edit”.

## The Editing Toolbar
After switching to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section Editing Toolbar is opened at the bottom of the map screen (see [Fig. 988.](#ngmobile-editing-toolbar-pic)).

#### NOTE
This editing toolbar is common for all vector layers irrespective of the type of geometry they contain (point, line or polygon).
## Adding features
To create a new feature first select a layer you want to add this feature to. Then switch to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section.
After Editing Toolbar is opened tap “Add new feature” button (item 2 in [Fig. 988.](#ngmobile-editing-toolbar-pic)).
#### NOTE
Type of geometry of a new feature should correspond to the type of geometry of the layer you want to add this feature to (e.g. you can only add a new point to a point/multipoint vector layer, a new line - to a line/multiline vector layer, etc.).
#### NOTE
If you want to start adding new features from scratch first you have to create an empty layer as described in [Creating new vector layer](load_geodata.md#ngmobile-create-vector) section.
### Adding a point
1. To create a new point first select a point/multipoint vector layer you want to add this feature to. Then switch to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section.
2. Tap “Add new feature” button in Editing Toolbar (item 2 in [Fig. 988.](#ngmobile-editing-toolbar-pic)).
3. In a point layer a new point will appear in the center of the screen highlighted in red. You can move this point anywhere on the map simply by dragging the circular handle attached to it. The red crosshair marker indicates the center of Map screen (see [Fig. 989.](#ngmobile-creation-of-points-pic)).

1. For adding a point to a multipoint layer execute steps 1-2 and then tap “Add point” (item 6 in [Fig. 990.](#ngmobile-creation-of-multipoints-pic)). After that you can set point’s location as described above in the step 3.

1. After a geometry of new point is added you may set its attributes by tapping on the “floppy” button (item 5 in [Fig. 989.](#ngmobile-creation-of-points-pic) and [Fig. 990.](#ngmobile-creation-of-multipoints-pic)). Pressing floppy icon will save a new point and open Attributes editing form (see [Fig. 991.](#ngmobile-input-form-attributes-pic)).

1. When all the attributes are set tap “Apply changes” button (item 2 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) to save the attributes. If you tap “Back” button instead (item 1 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) the app will warn you of any unsaved changes. You can also attach photos to each feature using “Add photo” button in Attributes editing form (item 3 in [Fig. 991.](#ngmobile-input-form-attributes-pic)).
See how to add and label points in our videos:
Watch on [youtube](https://youtu.be/WzMJE9ExGXA?si=8yor6iJIVjswuuTu).
Watch on [youtube](https://youtu.be/5M9uzmU_lgA?si=ow5589SuuR70Dg1S).
### Adding a line
1. To create a new line first select a linestring/multilinestring vector layer you want to add this feature to. Then switch to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section.
2. Tap “Add new feature” button in Editing Toolbar (item 2 in [Fig. 988.](#ngmobile-editing-toolbar-pic)).
3. In a linestring layer a new line will appear in the center of the screen, with one of its vertices highlighted in red (see [Fig. 992.](#ngmobile-creating-lines-pic)).

You can move the vertices anywhere on the map simply by dragging the circular handle attached to the selected vertex. If you tap on the vertex in the middle of the line, two new vertices will be created automatically. This way you can add as many vertices as you need and shape the line geometry any way you like, including smooth curves.
1. For adding a line to a multilinestring layer execute steps 1-2 and then tap “Add line” (item 6 in [Fig. 993.](#ngmobile-creating-multilines-pic)). After that you can set vertices’ location as described above in the step 3.

1. After a geometry of new line is added you may set its attributes by tapping on the “floppy” button (item 5 in [Fig. 992.](#ngmobile-creating-lines-pic) and [Fig. 993.](#ngmobile-creating-multilines-pic)). Pressing floppy icon will save a new line and open Attributes editing form (see [Fig. 991.](#ngmobile-input-form-attributes-pic)).
2. When all the attributes are set tap “Apply changes” button (item 2 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) to save the attributes. If you tap “Back” button instead (item 1 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) the app will warn you of any unsaved changes. You can also attach photos to each feature using “Add photo” button in Attributes editing form (item 3 in [Fig. 991.](#ngmobile-input-form-attributes-pic)).
### Adding a polygon
1. To create a new polygon first select a polygon/multipolygon vector layer you want to add this feature to. Then switch to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section.
2. Tap “Add new feature” button in Editing Toolbar (item 2 in [Fig. 988.](#ngmobile-editing-toolbar-pic)).
3. In a polygon layer a new polygon will appear in the center of the screen, with one of its vertices highlighted in red (see [Fig. 994.](#ngmobile-creation-landfill-pic)).

You can move the vertices anywhere on the map simply by dragging the circular handle attached to the selected vertex. If you tap on the vertex in the middle of the line, two new vertices will be created automatically. This way you can add as many vertices as you need and shape the polygon geometry any way you like, including smooth curves.
You can also create holes in polygons by tapping button “Add hole” (item 6 in [Fig. 994.](#ngmobile-creation-landfill-pic) or item 8 in [Fig. 995.](#ngmobile-creation-multipolygon-pic)) and creating a hole geometry the same way you create polygon geometry.
#### NOTE
Hole geometry must be located INSIDE a polygon geometry otherwise the changes won’t be saved!
1. For adding a polygon to a multilipolygon layer execute steps 1-2 and then tap “Add polygon” (item 6 in [Fig. 995.](#ngmobile-creation-multipolygon-pic)). After that you can set vertices’ location as described above in the step 3.

1. After a geometry of new polygon is added you may set its attributes by tapping on the “floppy” button (item 5 in [Fig. 994.](#ngmobile-creation-landfill-pic) and [Fig. 995.](#ngmobile-creation-multipolygon-pic)). Pressing floppy icon will save a new line and open Attributes editing form (see [Fig. 991.](#ngmobile-input-form-attributes-pic)).
2. When all the attributes are set tap “Apply changes” button (item 2 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) to save the attributes. If you tap “Back” button instead (item 1 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) the app will warn you of any unsaved changes. You can also attach photos to each feature using “Add photo” button in Attributes editing form (item 3 in [Fig. 991.](#ngmobile-input-form-attributes-pic)).
## Adding current location
To add current location to a vector layer press Main actions button (item 8 in [Fig. 943.](main.md#ngmobile-main-activity-pic-1)), and then press a pushpin icon (item 7 in [Fig. 985.](#ngmobile-common-action-menu-pic)). In an opened dialog select a layer you’d like to add current location to (only point/multipoint geometry will be displayed) (see [Fig. 996.](#ngmobile-select-layer-dialog-pic)). If there is only one point/multipoint layer available, it will be selected automatically.

Current location will be added to selected layer as a new point or a new multipoint consisting of 1 point.
You can then add attributes as described in [Adding a point](#ngmobile-add-point) section.
#### NOTE
You can add current location to Point and Multipoint layers only!
## Adding line or polygon by walk
To add line or polygon by walk to a vector layer press Main actions button, and then press a walking man icon (item 5 in [Fig. 985.](#ngmobile-common-action-menu-pic)). In an opened dialog select a layer you’d like to add a new feature to (only linestring/multilinestring and polygon/multipolygon layers will be displayed) (see [Fig. 997.](#ngmobile-select-layer-by-walk-dialog-pic)).

Find more information about adding geometries in [Record tracks to vector layer](tracks.md#ngmobile-edit-vector-tracks) section.
#### NOTE
You can add tracks to either Linestring/Multilinestring or Polygon/Multipolygon layers!
## Editing a geometry
To edit an existing layer first select that vector layer and switch to Edit mode using any of the 3 methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section. The feature will turn its colour to **Blue**. Then tap on the pencil icon in Bottom toolbar (item 3 in [Fig. 988.](#ngmobile-editing-toolbar-pic)). The feature will turn its colour to **Red** in edit mode.
### Editing a point
To start editing a point first select the point/multipoint layer in the Layer tree and switch to Edit mode, then select a point by pressing on it. It will change its colour to blue. Then tap on the pencil icon in Bottom toolbar (item 3 in [Fig. 988.](#ngmobile-editing-toolbar-pic)). The selected point feature will be highlighted in red and have an arrow pointing at it.
To change location of a selected point simply pull it or arrow pointing at it to a desired place. Also a point can be moved using buttons from Bottom toolbar - to the center of the screen shown as Red Crosshair marker (item 6 in [Fig. 998.](#ngmobile-editing-of-points-pic)) or to the current device location (see item 7 in [Fig. 998.](#ngmobile-editing-of-points-pic)).
You can cancel editing at any point of time, without saving changes, by close editing button. (see item 1 in [Fig. 998.](#ngmobile-editing-of-points-pic)). The system will warn you about this.
In the end you can have your geofeatures digitized as shown below. See [Fig. 998.](#ngmobile-editing-of-points-pic).

The numbers indicate: 1 - Close editing (without saving); 2 - Feature ID & name of the Layer; 3 - Undo changes; 4 - Redo changes; 5 - Set attributes; 6 - Move point to the Red Crossover (Center); 7 - Move point to the current location.
When you edit a multipoint all points included in it change their colour to blue. The selected point will be highlighted in red and have an arrow pointing at it (see [Fig. 998.](#ngmobile-editing-of-points-pic)).

The numbers indicate: 1 - Quit (without saving); 2 - Feature ID & Name of the Layer; 3 - Undo changes; 4 - Redo changes; 5 - Set attributes; 6 - Add point; 7 - Delete point; 8 - Move point to the center of Map screen; 9 - Move point to the current location.
You can delete selected point (item 7 in [Fig. 999.](#ngmobile-edit-multipoint-pic)), move it to a new location simply pulling it or arrow pointing at it to a desired place, to the center of the screen shown as Red Crosshair marker (item 8 in [Fig. 999.](#ngmobile-edit-multipoint-pic)) or to the current device location (item 9 in [Fig. 999.](#ngmobile-edit-multipoint-pic)). Also you can add a new point to the multipoint (item 6 in [Fig. 999.](#ngmobile-edit-multipoint-pic)).
### Editing a line
To start editing a line first select the linestring/multilinestring layer in the Layer tree and switch to Edit mode, then select a line by pressing on it. It will change its colour to blue. Then tap on the pencil icon in Bottom toolbar (item 3 in [Fig. 988.](#ngmobile-editing-toolbar-pic)). The line will change its colour to red and will show all its vertices. Current vertex is highlighted in red and has an arrow pointing at it. The center of line segment between vertices is also indicated. Pressing the center of line segment leads to two new vertex being added to the line.
Selected vertex can be moved simply by pulling it or arrow pointing at it to a desired place. Also a vertex can be moved using buttons from Bottom toolbar - to the center of the screen shown as Red Crosshair marker (item 7 in [Fig. 1000.](#ngmobile-editing-lines-pic)) or to the current device location (see item 8 in [Fig. 1000.](#ngmobile-editing-lines-pic)).
You can delete the unrequired vertex by highlighting it and tapping delete vertex (see item 6 in [Fig. 1000.](#ngmobile-editing-lines-pic))
In this way you can even get a smooth curve as per the geographic shape.
In the end you can have your geofeatures digitized as shown below. See [Fig. 1000.](#ngmobile-editing-lines-pic).

The numbers indicate: 1 - Quit (without saving); 2 - Feature ID & name of the Layer; 3 - Undo changes; 4 - Redo changes; 5 - Set attributes; 6 - Delete vertex; 7 - Move vertex to the center of Map screen; 8 - Move vertex to the current location; 9 - Append geometry by walk; 10 - Edit by touch.
#### NOTE
If only one vertex remains in a line this line is deleted automatically.
When you edit a multiline all points included in it change their colour to blue. The selected point will be highlighted in red and have an arrow pointing at it (see [Fig. 1001.](#ngmobile-edit-multilines-pic))

You can delete selected point or line (item 7 and 8 in [Fig. 1001.](#ngmobile-edit-multilines-pic)), move a point to a new location simply pulling it or arrow pointing at it to a desired place, to the center of the screen shown as Red Crosshair marker (item 9 in [Fig. 1001.](#ngmobile-edit-multilines-pic)) or to the current device location (item 10 in [Fig. 1001.](#ngmobile-edit-multilines-pic)). Also you can add a new line to the multiline (item 6 in [Fig. 1001.](#ngmobile-edit-multilines-pic)).
### Editing a polygon
To start editing a polygon first select the poligon/multipoligon layer in the Layer tree and switch to Edit mode, then select a poligon by pressing on it. It will change its colour to blue. Then tap on the pencil icon in Bottom toolbar (item 3 in [Fig. 988.](#ngmobile-editing-toolbar-pic)). The polygon will change its colour to red and will show all its vertices. Current vertex is highlighted in red and has an arrow pointing at it. The center of line segment between vertices is also indicated. Pressing the center of line segment leads to two new vertex being added to the line.
New vertex can be moved or otherwise edited right after it has been added. Selected vertex can be moved simply by pulling it or arrow pointing at it to a desired place. Also a vertex can be moved using buttons from Bottom toolbar - to the center of the screen shown as Red Crosshair marker (item 7 in [Fig. 1002.](#ngmobile-editing-polygon-pic)) or to the current device location (see item 8 in [Fig. 1002.](#ngmobile-editing-polygon-pic)).
You can delete the unrequired vertex by highlighting it and tapping “Delete vertex” button (see item 6 in [Fig. 1002.](#ngmobile-editing-polygon-pic)).
#### NOTE
If only two vertices remain in a poligon this poligon is deleted automatically.

When you edit a multipolygon all points included in it change their colour to blue. The selected point will be highlighted in red and have an arrow pointing at it (see [Fig. 1003.](#ngmobile-edit-multipolygon-pic)).

You can delete selected point or polygon (item 7 and 10 in [Fig. 1003.](#ngmobile-edit-multipolygon-pic)), move a point to a new location simply pulling it or arrow pointing at it to a desired place, to the center of the screen shown as Red Crosshair marker (item 11 in [Fig. 1003.](#ngmobile-edit-multipolygon-pic)) or to the current device location (item 11 in [Fig. 1003.](#ngmobile-edit-multipolygon-pic)). Also you can add a new polygon to the multipolygon (item 6 in [Fig. 1003.](#ngmobile-edit-multipolygon-pic)) and add or delete a hole (item 8 or 9 in [Fig. 1003.](#ngmobile-edit-multipolygon-pic)).
## Editing attributes
To start editing attributes first select a layer you want to edit attributes in. Then switch to Edit mode using any of the methods described in [Switching to Edit mode](#ngmobile-switch-to-edit) section.
After Editing Toolbar is opened tap “Attributes info” button (item 5 in [Fig. 988.](#ngmobile-editing-toolbar-pic)). This will open Attributes Info panel as shown in [Fig. 1004.](#ngmobile-attributes-info-pic) below.

#### NOTE
NextGIS Mobile shows the following attribute fields by default (see item 4 in [Fig. 1004.](#ngmobile-attributes-info-pic)):
* For Point/Multipoint layers: each point’s location (in Latitude/Longitude).
* For Line/Multiline layers: length of each line feature (in meters).
* For Polygon/Multipolygon layer: length of each polygon feature’s perimeter (in meters) & area of each polygon feature (in square meters).
### Editing attributes using standard form
To start editing attributes using standard form first tap on “Set attributes” button (see item 6 in [Fig. 1004.](#ngmobile-attributes-info-pic)).
This opens a standard Attributes editing form as shown in [Fig. 991.](#ngmobile-input-form-attributes-pic).
After all the attributes are set tap “Tick” icon in the top right corner (item 2 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) to save the edits.
#### NOTE
If you tap the back button in the top left corner (item 1 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) instead, the system will warn you about unsaved changes.
The Camera icon at the bottom of a standard Attributes editing form (item 3 in [Fig. 991.](#ngmobile-input-form-attributes-pic)) allows to add to each feature image files (e.g. photos) from the local storage or take new photos.
### Editing attributes using custom form
If the layer was [created from a custom form (NGFP)](load_geodata.md#ngmobile-import-ngfp) the custom Attributes editing form will be used for editing. An example of such custom form is shown below in [Fig. 1005.](#ngmobile-custom-form-pic-1):

Custom Attributes editing forms may contain the following entry fields:
* Text;
* Space;
* Text field;
* List; Tandem list;
* Checkbox;
* Radio button;
* Date Picker;
* Photo.
“Text” field is used to provide additional information about geometry feature.
“Space” field is used to increase intervals between fields.
“Text field” can be used to add text or integers, depending on the field type (see item 4 in [Fig. 1005.](#ngmobile-custom-form-pic-1)).
“List” and “Tandem list” fields are used to store and select values included in custom lists, for example, “List” - region/republic/territory, “Tandem list” - district/area in region/republic/territory (see item 5 in [Fig. 1005.](#ngmobile-custom-form-pic-1)).
“Checkbox” field allows to check or uncheck a value.
“Date picker” field allows to select date, time or both of them (see item 6 in [Fig. 1005.](#ngmobile-custom-form-pic-1)).
“Radio button” field allows to select one element from a list of mutually exclusive options (see item 7 in [Fig. 1005.](#ngmobile-custom-form-pic-1)).
“Photo” field allows to take a new photo or to add photos from the local storage.
After all the attributes are set tap “Tick” icon in the top right corner (item 2 in [Fig. 1005.](#ngmobile-custom-form-pic-1)) to save the edits.
#### NOTE
If you tap the back button in the top left corner (item 1 in [Fig. 1005.](#ngmobile-custom-form-pic-1)) instead, the system will warn you about unsaved changes.
# egrn_kvartals_cover.html.md
# Cadastral plan of the territory
The tool forms list of ID of cadastral units.
Input:
* Area of interest - polygon in GeoJSON format. Area must be up to 50 km².
* Mode - choose between kpt and kvzu.
Output:
* CSV file
Launch the tool: [https://toolbox.nextgis.com/t/egrn_kvartals_cover](https://toolbox.nextgis.com/t/egrn_kvartals_cover)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# egrn_splitter.html.md
# EGRN Splitter
Split extra large EGRN extracts into layes of smaller size, reducing the volumes for futher conversion.
Inputs:
* Input extract. Select input extract ZIP file.
Outputs:
* None
Launch the tool: [https://toolbox.nextgis.com/t/egrn_splitter](https://toolbox.nextgis.com/t/egrn_splitter)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# elevation_qgis.html.md
# How to open elevation data in QGIS
* [Order elevation data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoPackage (QGIS) and GeoTIFF format choosing the step of contour lines.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Download and install [QGIS](https://qgis.org/en/site/forusers/download.html).
* Launch QGIS.
* To open a preset GIS project (which includes all layers with customized styles), click “Project” > “Open” and in pop-up window select the saved file “data.qgs”.

* The project will be added to QGIS; data is ready to go.

You can also add elevation data as files to an existing project.
* Drag and drop the following files from the unpacked data folder to QGIS interface: **hillshade.tif**, **dem.tif** and **contour_lines** (extention depends on the file type, for example if you purchased Shape file, you’ll need contour_lines.shp).

* Arrange the layers in the list in the most convenient way to work from top to bottom:
1. Contours
2. Hillshade
3. DEM
Detailed video **How to open elevation data in QGIS** - can be viewed [here](https://youtu.be/pwfJy5o5BmU/)
# embed_webmap.html.md
# How to embed a Web Map on your website
All Web Maps created on nextgis.com can be easily embedded into your website.
#### NOTE
This functionality is available only to nextgis.com [Mini and Premium](http://nextgis.com/nextgis-com/plans) users.
To embed a Web Map:
* Open Web Map
* Click on the “Share” panel on the left sidebar
* If you wish to, customize map width and height and [other parameters](https://docs.nextgis.com/docs_ngcom/source/embed_webmap.html#ngcom-embed-webmap-settings).
* Copy the code
* Paste this code to your site

You can preview the embedded map before publishing it by pressing **Preview** button.
## Embeded map settings
**Map size** - width and height in pixels.
**Link to the main map** - to go from the site to the map page in the Web GIS.
**Generate events** - for integration and programmatic interaction with the iframe.
You can also embed a Web Map with additional tools and panels. This will allow users, for instance, to enable and disable particular layers.
**Tools** available for embeded map:
- feature identification;
- measuring area and distance;
- cursor location and extent coordinates;
- scale line;
- initial extent;
- marking user location;
- zoom;
- scale info.
You can also choose which **panels** will be available on the map:
- description;
- layers;
- search.
If several panels are added, you can use the **Active panel** menu to select one of them to be displayed by default or have the map open with the panels minimized.
All settings are included in the code.

If you are a developer check out the [code.nextgis.com](https://code.nextgis.com/) library suite
and the [NGW API](https://docs.nextgis.com/docs_ngweb_dev/doc/toc.html).
## How to share a link to a particular Web Map feature
Using specially generated GET queries you can share a link to a particular feature of a layer. The link will open with the geographical context that you can select in the Web Map settings.
All you need to do is create links in the information systems. By clicking on them users will be directed to the map with the selected feature and context.
Such links can be automatically generated by your system integrated with NextGIS Web.
Here’s an example:
[https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6108&hl_attr=OSM_ID&hl_val=230629285&zoom=17](https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6108&hl_attr=OSM_ID&hl_val=230629285&zoom=17)
* [https://demo.nextgis.com/resource/7023/display?panel=layers](https://demo.nextgis.com/resource/7023/display?panel=layers) - the “pure” Web Map link;
* hl_lid – layer ID;
* hl_attr – attribute (name of attribute field of feature ID);
* hl_val – value of feature ID;
* zoom - value in numbers with 1 as a minimum.

You can make the link manually ([more on how to do it](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-feature-link)).
# embed_webmap.html.md
# Embed Web Map on a Web page
All Web Maps created on nextgis.com can be easily embedded into your website.
#### NOTE
This functionality is available only to nextgis.com [Mini and Premium](http://nextgis.com/nextgis-com/plans) users.
To embed a Web Map:
* Open Web Map
* Click on the  “Share” panel on the left sidebar
* If you wish to, customize map width and height and [other parameters](https://docs.nextgis.com/docs_ngcom/source/embed_webmap.html#ngcom-embed-webmap-settings).
* Copy the code
* Paste this code to your site

You can preview the embedded map before publishing it by pressing **Preview** button.
## Embeded map settings
**Map size** - width and height in pixels.
**Link to the main map** - to go from the site to the map page in the Web GIS.
**Generate events** - for integration and programmatic interaction with the iframe.
You can also embed a Web Map with additional tools and panels. This will allow users, for instance, to enable and disable particular layers.
**Tools** available for embeded map:
- feature identification;
- measuring area and distance;
- cursor location and extent coordinates;
- scale line;
- initial extent;
- marking user location;
- zoom;
- scale info.
You can also choose which **panels** will be available on the map:
- description;
- layers;
- search.
If several panels are added, you can use the **Active panel** menu to select one of them to be displayed by default or have the map open with the panels minimized.
All settings are included in the code.

If you are a developer check out the [code.nextgis.com](https://code.nextgis.com/) library suite
and the [NGW API](https://docs.nextgis.com/docs_ngweb_dev/doc/toc.html).
# embedsvg.html.md
# Embed SVG into QGS/QML
The tool adds SVG markers to QGS project file or QML style file.
QGIS enterface allows to embed SVG markers to style, but only one-by-one. If a style has a big variety of markers, this takes a lot of time and concentration to avoid mistakes. The tool embeds all SVG markers of the layer style, or of the entire QGIS project.
Input: ZIP-archive with
* SVG files;
* QGS project file / QML style file, into which SVG vector markers will be embedded.
Output:
* ZIP-archive with updated QGS project file / QML style file (depending on the input).
Launch the tool: [https://toolbox.nextgis.com/t/embedsvg](https://toolbox.nextgis.com/t/embedsvg)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# empty_geoms.html.md
# Empty geometries in Web GIS layer
Find and remove empty geometries in a Web GIS layer.
Inputs:
* Web GIS address. URL of your Web GIS, e.g. [https://sandbox.nextgis.com](https://sandbox.nextgis.com);
* ID of the vector layer. Numbers at the end of the URL of the vector layer resource in Web GIS;
* Login. NextGIS ID or Web GIS username;
* Password. Web GIS user password;
* Remove. Tick to remove empty geometry features from Web GIS layer.
Outputs:
* Result. A list of empty geometry features IDs.
Launch the tool: [https://toolbox.nextgis.com/t/empty_geoms](https://toolbox.nextgis.com/t/empty_geoms)
**Try the tool in action by downloading our example:**
[Input data set](https://nextgis.com/data/toolbox/empty_geoms/empty_geoms_inputs.zip) to test the tool. The archive contains step-by-step instructions.
[Result example](https://nextgis.com/data/toolbox/empty_geoms/empty_geoms_outputs.zip) of the tool run.
# encoding_change.html.md
# How to change data encoding
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoJSON format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Import target layer, which encoding you want to change, in [QGIS](https://qgis.org/en/site/forusers/download.html).
* Right-click on a target layer in Layers Panel, select option “Save as…”. Thus you’ll create a copy of the layer, but in desired encoding.

* In the pop-up window select format “ESRI Shapefile” and the desired encoding (in this example - windows-1251), and also specify a name and a path to a new file. Press “OK”.

* A new layer with the desired encoding will be created.

# eraser.html.md
# Erase overlapping areas from layer
Erases parts of polygonal features, overlapping with geometries from another layer.
Inputs:
* Target layer (erase from) - file in OGR-supported format (ZIP archive for ESRI Shapfile);
* Layer with subtractable objects. File in OGR-supported format (ZIP archive for ESRI Shapfile).
Outputs:
* File with modified features in the same format.
Launch the tool: [https://toolbox.nextgis.com/t/eraser](https://toolbox.nextgis.com/t/eraser)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# erosion_analysis.html.md
# Erosion Susceptibility Analysis
RUSLE-based erosion susceptibility analysis using LS-factor, STI, SPI, profile curvature, and slope. Produces an Erosion Susceptibility Index (ESI) scaled 0-100 with 5-level classification.
Inputs:
* Terrain Analysis Package (ZIP). ZIP file from [Comprehensive Terrain Analysis](https://toolbox.nextgis.com/t/terrain_analysis) containing DEM, slope, flow accumulation, curvature, STI, SPI, and manifest.json
* Weight: LS-Factor. Weight for the LS-factor indicator (default: 0.35)
* Weight: STI. Weight for the Sediment Transport Index (default: 0.25)
* Weight: SPI. Weight for the Stream Power Index (default: 0.15)
* Weight: Curvature. Weight for the profile curvature indicator (default: 0.10)
* Weight: Slope. Weight for the slope indicator (default: 0.15)
* Hotspot Threshold. ESI value above which areas are classified as hotspots (default: 65)
* Spectral Indices Package (ZIP). Optional ZIP from spectral_indices with vegetation index aggregates. When provided, a vegetation indicator is added to the weighted overlay.
* Weight: Vegetation Index. Weight for the vegetation index indicator (default: 0.10). Only used when spectral_zip is provided. Other weights are scaled down proportionally.
Outputs:
* Erosion Analysis Package (ZIP). ZIP archive with erosion susceptibility rasters, vectors, statistics, and manifest
* Summary. Human-readable summary of the erosion analysis results
* Manifest JSON. JSON manifest string describing all outputs
Launch the tool: [https://toolbox.nextgis.com/t/erosion_analysis](https://toolbox.nextgis.com/t/erosion_analysis)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# error_report.html.md
# Error reporting
If request failed, error code will be in HTTP header and error description text
in JSON of response body.
**Example response**:
```http
HTTP/1.1 403 Forbidden
Server: nginx/1.4.6 (Ubuntu)
Date: Sun, 21 Sep 2014 00:05:31 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 44
Connection: keep-alive
{"message": "Attribute 'keyname' forbidden"}
```
In some cases the html text or empty body may returned. For example, if
internal server error occurred, HTTP status code set to 500 and html text returns.
# excel.html.md
# How to open data in Excel
* [Order data](https://data.nextgis.com/en/) for your area of interest in CSV format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Launch Excel. Select the “Data” tab > “From Text/CSV” and in the pop-up window find the desired layer in CSV format, click “Import”.

* In the new window for the File Origin specify “Unicode (UTF-8)”, for Delimiter - “Tab”, then click “Load”.

* Data is added to Excel spreadsheet

# exif2resource.html.md
# Photos with EXIF to NGW layer
Convert a set of georeferenced photos with EXIF tags into NextGIS Web point vector layer. You can also add photos to an existing point layer.
NextGIS Web (NGW) is a geodata managing system. You can use it for free after [signing up](https://docs.nextgis.com/docs_ngcom/source/create.html). With NextGIS Web you can store geodata, create interactive online maps, give access to them to your teammates and clients, edit features directly on the map and in the feature tables, as well as process them with specialized Toolbox tools. [More on what NGW can do](https://docs.nextgis.com/docs_ngweb/source/general.html).
Input:
* Photos. ZIP archive containing photos with EXIF tags. No subfolders, no extra files - only photos;
* Web GIS link. NextGIS Web GIS link, e.g.: [https://sandbox.nextgis.com](https://sandbox.nextgis.com)
* Login. NextGIS ID or Web GIS user login. User must have permission to write data.
* Password. Password for the user above
* Group ID. Numbers at the end of the resource group URL. Default is 0, layer will be created in the Main resource group (root).
* Layer ID. To add photos to an existing layer, enter the numbers at the end of its URL
* Mode. Working mode: set to ADD to add points to existing ones or REPLACE to wipe existing points and add new ones.
Also you can create an additional field storing some information, for example, the author of the photos:
* Additional attribute. Name of the attribute field to store a custom value
* Additional field value. A text string to add to each new feature
Output:
* Vector layer where each photo corresponds to a point. The same photo is added as an attachment to this point.
Watch the video on [youtube](https://youtu.be/r5v0wzOufV8).
Launch the tool: [https://toolbox.nextgis.com/t/exif2resource](https://toolbox.nextgis.com/t/exif2resource)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# explication2poly.html.md
# Explication to a polygon
The tool converts an explication report in correct format to a polygon. Explication report has to be an MS Excel file that contains data about direcions and distances between points. Directions should be presented in degrees and corresponds to magnetic azimuth.

Inputs:
* XLS(X) file - MS Excel file containing the explicaton report;
* Latitude of an anchor point. This value is specified in the coordinate system EPSG 4326. Use dot as a separator between the integer part and the fractional part;
* Longitude of an anchor point. This value is specified in the coordinate system EPSG 4326. Use dot as a separator between the integer part and the fractional part.
#### NOTE
Due to inaccuracies in measuring angles and distances on the ground, the first point of the output polygon may be farther from the last one than on the ground. As a rule, the difference does not exceed 2-3 meters.
Outputs:
* Zipped polygonal shapefile
Launch the tool: [https://toolbox.nextgis.com/t/explication2poly](https://toolbox.nextgis.com/t/explication2poly)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# export.html.md
# Export to file
## Save layer as file
To save a **layer** to your device select in the main menu Layer ‣ Save as or in the Layers panel in the layer’s context menu select Export ‣ Save features as.

## Save vector layer style
To save a QGIS **style** of a vector layer, in the Connect panel open its context menu and select **Download as QML**.

# export.html.md
# Export track as GPX
Tracks can be exported as GPX files.
On the main screen of the app in the “Tracks” section select the track you want to export, as shown on [Fig. 1130.](#select-track-share-pic).

Press **Share** on the right of the track and choose where to save or send it in GPX format.

Also you can export tracks as GPX files [from your Web GIS](https://docs.nextgis.com/docs_ngweb/source/trackers.html#track-export).
# extension.html.md
# Extensions
## General Information
The following extensions are available to increase the functionality of the software:
1. **Basemaps** - adding and managing basemaps.
2. **File buckets** - file sets, adds ability to upload any files, including non-geospatial ones.
3. **QGIS** - map rendering with QGIS.
4. **MapServer** - map rendering with MapServer.
5. **Audit** - logging user events such as log in/out, resource addition or removal etc.
6. **NextGIS ID on premise** - enterprise authentification and authorization features, such as LDAP or OAuth.
Specific extensions may require installation of additional software components.
# extracts.html.md
# NextGIS Data extracts
## How the files are organized
When you order data on [NextGIS Data](https://data.nextgis.com/en/), you get a ZIP archive that need to be unpacked before use. The name of the archive includes the date of the extract, its format and the code of the region (or “custom” if you selected your own area).
The archive unpacks to a folder containing the following files and subfolders.
All extracts include:
* Boundary of the selected area `order_boundary.geojson`.
* Folder called `data`. It contains data layers and styles as well the data boundary in the selected format.
* A text file that has information on copyright and licencing, `readme.txt`.
Depending on the data type and format the extracts may also contain:
* Project file for QGIS data.qgs\`, ArcMap `data.mxd`, ArcGIS Pro `data.aprx` or Mapinfо `data.wor`. Double-click on it to open in the corresponding software. All layers are already added to the project and stylized.
> * QGIS projects are included for all products, if you select **Geopackage, Shape or GeoJSON** format.
> * Projects for ArcMap and ArcGIS Pro are available for all projects if you select **Geodatabase or Shape** format.
> * Project for MapInfo is available only for the Basemap if you select **Mapinfo TAB** format.
* Folder containg icons, `svg`. Some styles use vector markers in SVG format. This folder need to be next to the project for the style to work.
## Attributes in OpenStreetMap extracts
Usually GIS data is organized into layers, each with its specific geometry type and a set of attributes. OpenStreetMap project organizes data differently. It’s one big database containing interlinked geometries. Each feature has tags in the form of key-value pairs. Contributors can invent new keys, but the standard ones are described on wiki.openstreetmap.org. In NextGIS Data extracts the features are split into layers with the most important attributes.
* [List of attributes with descriptions](https://docs.google.com/spreadsheets/d/e/2PACX-1vRIUla6YhWLBPCfKZ6ldWZ_xAO7lc-DtHcS6_MI4knV1RgWgkfm0MOKaQJXHQ1Cnxg8UDl0hXpt4Eqk/pubhtml)
* For the details of OSM tags see [OpenStreetMap wiki](https://wiki.openstreetmap.org/wiki/Map_features)
## Attributes of other products
* [Elevation](https://docs.google.com/spreadsheets/d/1PRSpeLWrFttCS7tz8rk--R7aoV_B8LuGbDuUbhLyWJg/pubhtml)
* [Buildings AI](https://docs.google.com/spreadsheets/d/e/2PACX-1vRgaXygAc2KXQp-nGK2t8KcBYqCb6cttxCO6UzUkIdSafVxQmxhUBrGIV3pLjCMi64Ys0_tAwa61ZAy/pubhtml)
* [Roads AI](https://docs.google.com/spreadsheets/d/e/2PACX-1vT6LtVjaJy8GAOwBGFGqjL5NX0meddQbwG0qtiZuqBPMmDsjLAxYWM4ARzFDegb2UG2vhlHaLefOP2s/pubhtml)
* [Overture](https://docs.google.com/spreadsheets/d/e/2PACX-1vS2K6m2aTT-CRLZJROrAcsnBAcDPEcWJkxdh9l1dbSxpkSQ3UzusYRixNfCL8v74tXB7DFYjxltRInP/pubhtml?gid=0&single=true)
* [Places](https://docs.google.com/spreadsheets/d/e/2PACX-1vTPDiDiyf4nrfY-8cER2qyzjolFPDeOo_a2qa1ZICCr8XtH5Ba4cfKb2NZd2UB9S3zbiSzOmWK6dNDw/pubhtml?gid=125713722&single=true)
* [Landcover](https://docs.google.com/spreadsheets/d/e/2PACX-1vR9Uf9DzxXdxHH6h0lUnFd27bRNN6bRnsVpuVRPRnFTmIEnELZVGTAFXdtAg68zpUshCC2l1bi7F2tg/pubhtml)
* [Heritage](https://docs.google.com/spreadsheets/d/e/2PACX-1vTC_wgWY28Y3QjgvJ-Q8Jmu6Doxxhpz-Hm_b3JwEjqcpk8bpQmRJq6ldwgZoHWbWxk-FC2Wi0nyjXnY/pubhtml)
* [Satellite](https://data.nextgis.com/en/region/custom/sat/?format=geotiff) - three-band RGB raster, not other attributes
* [Tiles](https://data.nextgis.com/en/region/custom/tiles/) - no attributes
* [Printable map](https://data.nextgis.com/en/region/custom/printmap/) - no attributes, the legend is included
# faq_ngmobile.html.md
# Solving problem (Q&A)
In this section you can find answers to the most frequently asked questions about using NextGIS Mobile (NGM).
## Application sign in
### What should the username and password be to sign in to NGM?
To sign in to NGM, you need to use NextGIS ID, account you’ve created while registering at my.nextgis.com
[Here](https://docs.nextgis.com/docs_ngcom/source/create.html#nextgis-id/) you can see how to get it.
If you created, but forgot the password for NextGIS ID, follow [password recovery instruction](https://docs.nextgis.com/docs_ngcom/source/faq_webgis.html#q-nextgis-id/). Note that log in part is optional and only needed if you’d like extended NGM functionality.
### I sign in to NGM as administrator and the **application** shows an error. What am I doing wrong?
To sign in to NextGIS Mobile, you need to use **NextGIS ID**. Administrator is a Web GIS username local to this Web GIS. You cannot sign in to NGM with this name.
### I entered mywebgis.nextgis.com as my authorization server but stil can’t sign in. What am I doing wrong?
If you’re on Premium your authorization server is my.nextgis.com. If you entered something else - please remove it.
Different authorization setting is for NGW installations on your own servers.
## Other issues
### Something went wrong on my device and the data is corrupted. Is there a way to restore it?
Try restoring the layers in the Settings –> Map –> Restore broken layer
[More details](https://docs.nextgis.com/docs_ngmobile/source/settings.html#ngmob-restore-layer).
# faq_webgis.html.md
# Problem Solving (Q&A)
In this section you can find answers to the most frequently asked questions about using Web GIS.
## How to sign in to Web GIS
### I have a Web GIS. How do sign in?
In the upper right corner press “Sign in”, then select “Sign in with NextGIS ID”. Enter the credentials of your global NextGIS account (username or email used for registration and password).
If you forgot your password or login, see instructions [below](https://docs.nextgis.com/docs_ngcom/source/faq_webgis.html#ngcom_change_passwords_webgis).
### I want to let another user access my Web GIS. How can I do it?
1. The user creates an account on [my.nextgis.com](https://my.nextgis.com/).
2. The owner of the Web GIS goes to the [Team](https://docs.nextgis.com/docs_ngcom/source/teams.html#team-management) page and adds a new team member by username.
3. The user logs in with NextGIS ID.
## Access recovery and passwords
### I forgot my account password (NextGIS ID). What to do?
To recover a password from *NextGIS ID*, follow these steps:
1. Go to [my.nextgis.com](https://my.nextgis.com//)
2. Select “Forgot password?”

### I forgot both username and password of my account. What to do?
If you lost both username (email) and password from your account and can’t recover access to your Web GIS, follow these steps:
1. Write us at [support@nextgis.com](mailto:support@nextgis.com) with the address of your Web GIS. Add information that will help us identify you as the owner of this Web GIS. Agreement number or paid invoice or any other information.
2. We will let you know in a reply what your login is.
3. Use instruction above “I forgot my account password (NextGIS ID). What to do?” to recover your password and futher access to your account.
### I forgot the password for a local Web GIS user created by the administrator
If you have forgotten the password for a local user, an administrator can reset it:
1. Log in to your Web GIS [https://username.nextgis.com/](https://username.nextgis.com/) as a user with **administrator** access.
2. Open the main menu in the upper right corner of the interface.
3. Go to Control Panel.
4. Open the user list.
5. Change the password in the user settings.

## Personal data
### What personal data are stored by NextGIS services?
1. Log in with your account at [https://my.nextgis.com](https://my.nextgis.com). See FAQ sections above to restore access.
2. Go to Profile, Profile management section
3. Choose Data export, press Request data.
You will receive a copy of your personal data processed by NextGIS.
### How do I completely remove all personal data stored at NextGIS?
1. Log in with your account at [https://my.nextgis.com](https://my.nextgis.com). See FAQ sections above to restore access.
2. Go to Profile, Profile management section
3. Choose Profile removal, press Delete profile.
Your profile and personal data will be completely deleted. This can’t be undone.
## Two NextGIS accounts. Background
NextGIS is growing fast and it has several services and products that use authorization. Web GIS is one of this services.
As a rule, a typical NextGIS platform user needs 2 accounts: a global and a local one. But, for some specific tasks, it is possible that just one of them will be enough.
### Global account
Most services require a **global** account NextGIS ID. This is the typical account that acts uniformly almost everywhere. It gives access to all services.
This account is created by registration at [http://my.nextgis.com](http://my.nextgis.com). Email or login and password provided during registration can be used to sign in with services.
### Local account (your Web GIS account)
For each Web GIS it’s possible to enable its own account system that operates locally within that Web GIS.
These accounts are created in the Web GIS control panel by a user with appropriate authority (usually administrator). They are not tied to any E-mails and don’t have access to other functions of NextGIS platform, just to the Web GIS.
# favorites.html.md
# Favorites
In NextGIS Web, you can have quick access to the most frequently used resources (groups, layers, maps and fragments of maps) through the Favorites feature.
To add a resource to Favorites, navigate to its page, click on the user initials in the top panel to open the menu and press the star icon. Click on the Favorites item in the menu to open the Favorites page.

On the Favorites page you can edit the list of added resources and modify names of Web Map fragmets (more about managing Favorites [here](https://docs.nextgis.com/docs_ngcom/source/favorites.html)).

## How to add Web Map fragment to Favorites
You can add a Web Map to Favorites with the extent different from the initial extent chosen in the Web Map settings. To do so open the map, modify the extent, then open the “Share” tab and press the star next to the “Copy link” button.

You can set up a custom name for the fragment or keep the default (“Fragment”).

The fragment name can later be edited from the Favorites page (see below).
## Favorites list editing
The Favorites page contains a list of the added resources. Above each one there is the name of the parent resource, if it’s not the Main resource group.

To open the page of a resource, press **Go to** button on the right end of the row.
Press **Edit** button to modify the list.

To remove a resource from Favorites, click the bin icon on the right. No additional confirmation needed. Deleting from Favorites will not affect the resource itself. You can add it to Favorites and remove it multiple times.
Also from this page you can modify the name of the added Web Map fragments.
To exit the editing mode, press **Done**.
See how to use Favorites in our video:
Watch on [youtube](https://youtu.be/Nk42wbopjBk?si=mK0uk6t6c4lE0i-z).
# feature_edit.html.md
# Edit vector features
You can modify **geometries and attributes** of vector features via Web interface:
* [in the Feature table](https://docs.nextgis.com/docs_ngweb/source/feature_table.html) ,
* or on a Web Map (see below),
* as well as [in QGIS desktop app](https://docs.nextgis.com/docs_ngconnect/source/edit.html).
If you enable [feature versioning](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic), all the edits are recorded in the [layer history](https://docs.nextgis.com/docs_ngweb/source/version.html#nextgis-web).
Editing is available for users who have permissions to [read and modify data](https://docs.nextgis.com/docs_ngcom/source/permissions.html). The “Modify data” permission can be set for the entire resource group where the data is stored or for individual layers.
[How to check user permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html#ngcom-permissions-view).

By default, when a new Web Map is created, users can edit features directly on it. You can [disable feature editing on the map](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-allow-edit) in Web Map settings.
## Edit mode on a Web Map
1. Open [Web Map](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html) and select the layer with the feature you need to edit.
2. Open dropdown menu by pressing the three dots to the right of the layer name (see [Fig. 391.](#webmap-edit)), then select “Edit”.

1. Editing toolbar will appear on the Web Map (see [Fig. 392.](#webmap-edit-panel)):

*  [Create feature](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-create-objects) - this tool is active when you first enter the edit mode;
*  [Edit](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#webmap-edit-vertices);
*  [Move](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-move-objects) an entire feature;
*  [Edit attribute values](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-attributes);
*  [Delete](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-delete-objects);
*  Snapping: blue = enabled, white = disabled;
*  Stop editing and leave Edit mode;
*  Undo the last action.
Also, for polygons one more tool is available:
*  [Cut a hole](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#webmap-hole).
Below you can find detailed description of these operations.
Features available for editing are highlighed. You can edit multiple layers at once, each is highlighted with a different color.
## Create a new feature (point, line, polygon)
1. Enter Edit mode. The  “Create” tool is active by default (the button is blue). If you used some other tool before that, click on the button to activate feature creation.

1. A colored circle will appear nearby a mouse pointer, with it you can add new features. Click on the map to create a new feature.
2. A dialog opens where you can add attribute values.
Click **OK** to finish creating a feature. To clear the attribute form, click **Reset**.

You can enter multiple features one after the other.
When creating a line, click on the map to indicate its start and end points. While creating a polygon each new click on the map adds a new vertex.
To finish creating geometry, press **Enter**, click twice on the last vertex or click . To finish a polygon you can also click on its starting point.
If you accidentally click on a wrong place, press **Backspace** to delete the last vertex and place it elsewhere.
Snapping is enabled by default for lines and polygons. To disable it, click .
#### NOTE
If you need to create a polygon with a hole, first draw the outer ring and complete feature creation, then use  tool to [cut the hole](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#webmap-hole).
4. To save created features to the layer, click  “Stop editing”.
In the opened dialog select **“Save”** to save changes, “Don’t save” to discard them, or “Cancel” to stay in the edit mode:

## Delete feature
1. Enter the edit mode. On the editing toolbar click on the  “Delete” button.
2. Click on the features you want to delete. The highlighted contour of the editable features disappears.

4. To finish deleting features, click  “Stop editing”.
In the opened dialog select “Save” to save changes, “Don’t save” to discard them, or “Cancel” to stay in the edit mode (see [Fig. 395.](#webmap-finish-edit)).
## Move feature
1. To move en etire feature, enter the Edit mode and activate  “Move” tool.
2. Click on the feature to select it, then drag to a new location.
Both the old position (style colors) and the new position (selection color) are shown.

1. Click  “Stop editing” and save the changes.
Also you can move individual vertices of lines and polygons.
## Edit vertices
1. On the toolbar click on the  “Edit” button.
Editable features are highlighted.
1. Click on a vertex and drag it to a new position by holding the left mouse button. Snapping is active by default. To disable it, click .

1. To finish editing click  “Stop editing” and save the changes (see [Fig. 395.](#webmap-finish-edit)).
#### NOTE
You can edit several layers simultaneously. To do it enter the edit mode in every layer you want to edit. Snapping works for features of all these layers.
## Add and delete vertices
To **delete** a vertice enter the Edit mode, then activate the  “Edit” tool, hold **Shift** and click on the vertex.
To **add** a vertex, click on the line between two existing vertices and drag it to the desired location.

## Create holes
If you need to create a polygon that has one or seleral areas cut from it:
1. First add the outer contour using the  Create tool.
2. Activate the  Cut hole tool and draw a closed boundary of the hole.

1. To finish editing click  “Stop editing” and save the changes (see [Fig. 395.](#webmap-finish-edit)).
## Edit feature’s attributes
NextGIS Web software allows users to edit attributes of geographical features. There are several ways to open the dialog:
* From the resource list:
- Click on the  table symbol [by the vector layer](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#feature-table-choice-from-group-pic) (or open the layer resource page and select “Feature table” in the [actions pane](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#admin-table-objects-upload)).
- Feature table opens. Click on the entry in the table to select it.
- Click on the **Edit** button in the table toolbar.

If you are in the Web Map  display mode.
* From the Feature table:
> - In the layer’s context menu select “Feature table” and then follow the steps described above.
* In the Edit mode:
> - In the layer’s context menu select “Edit”.
> - In the toolbar on the map select .
> - Click on the feature on the map.
* From the Identify panel:
> - Click on the feature on the map.
> - In the Identify panel click on the “Edit” symbol (see [Fig. 403.](#ngweb-editing-when-viewing-map)).

Editing dialog has the following tabs:
* “Attributes” tab:

To edit an attribute click on the field.
Numbers can be typed in or modified with arrows that appear on the right end of the field.
Dates also can be typed in or selected in the calender. To open the calender click the icon on the right end of the field.
Add a [Lookup table](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-lookup-table) to a field to be able to pick a value from a dropdown list.
* “Attachments” tab ([more on managing attachments](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-attachments));

* “Description” tab - the description is displayed in the Identify panel when you click on a featre.

#### NOTE
If you opened the feature attributes dialog from the Feature table on a separate page, you can edit the feature’s geometry in the fourth tab. If you opened the edit dialog from a Web Map, to edit the geometry activate [Edit mode](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#edit-mode).
## Attachments
NextGIS Web software supports adding photos, panoramas and other files to the features.
If a feature has attachments, they will be shown along with description and attributes in the identify window (see [Fig. 407.](#attachm-tab-pic)).

Files in the following formats can be viewed directly in the web client:
* JPEG, PNG images. GIF format not supported.
* Panoramas complying with the [specification](https://developers.google.com/streetview/spherical-metadata?hl=en).
Other types of files can be added as attachments, but won’t be viewed in the interface.
After a click on a photo preview a lightbox window is open (a
javascript powered window in browser). Photo size is adjusted to fit the window. Photos have descriptions and user can navigate through them using left and right arrow keys on the keyboard (see [Fig. 408.](#webmap-identification-photo-lightbox)).

You can zoom in and out, turn the image or save it to your device.
To navigate within the panorama, use the mouse. Hold down the left mouse button to rotate the camera. Use the wheel to zoom in and out. Panorama mode can be disabled by clicking on the blue round button in the upper right corner.

### Add attachments to a feature
To add an attachment to a feature, go to the edit window. There are several ways to open it:
* Click on the feature on the Web Map, then in the pop-up window press the **Edit** button.
* Open the feature table on the Web Map, select the feature and click **Edit** in the toolbar.
* Open the feature table from the resource page, select the feature and click **Edit** in the toolbar.
On the Edit page open the Attachments tab and upload the files.

Enter titles for the attachments and press **Save**.
After uploading you can see previews of photos and panoramas on the “Attachments” tab of the identify window (see `attach_tab_pic`).
#### NOTE
By default attachments could be added by any user but there is an option to limit number of users who can upload photos (see [Managing access rights](https://docs.nextgis.com/docs_ngcom/source/permissions.html)).
You can edit file names and descriptions of the added attachments. To delete an attachment, press the cross icon to its right. If you’ve made an error during editing, press **Reset**, all modifications will be cancelled.
To delete an attachment select it on the “Attachments” tab of the edit window, click **Delete**, and then click **Save** button.
See the process of adding attachments in our video:
Watch on [youtube](https://youtu.be/t1c1GT2myD4?si=2SZsLHOYH_lfnNAx).
### How to use panoramas
Not only photos, but also panoramas can be added as attachments. They allow to immerse explore new locations or find new details in familiar places.

Uploaded panoramic images must comply with the Google XMP Photo Sphere [specification](https://developers.google.com/streetview/spherical-metadata?hl=en).
See how to work with panoramas in our video:
Watch on [youtube](https://youtu.be/MeZ0jJAbZ5I?si=F6s_wScaTeEjfpPl).
### Export and import attachments
To copy feature attachments between different layers or to create a backup you can save them to your device as an archive (Standard layer saving does not include attachments).
Navigate to the layer resource page and select **Manage attachments**.

To save the attachments, go to the **Export** tab and press **Export attachments to ZIP archive**. The resulting ZIP archive will contain all of the attachments put in directories named after feature IDs. Attachment metadata are put into a separate JSON file.

The resulting archive can be imported to add the attachments to the layer features. Open the **Import** tab, click **Import attachments from ZIP archive** and select the archive on your device. An archive must contain directories named after feature IDs. Each folder can contain one or many attachments. Duplicates will be ignored. If you need to replace the current attachments, tick “Delete existing attachments”.

## Disable editing on the map
By default editing of features on a Web Map is enabled. You can disable editing in the Web Map settings on the “Settings” tab.
#### NOTE
There are other way to edit vector layers. If you don’t want users to modify your data, configure [permissions](https://docs.nextgis.ru/docs_ngcom/source/permissions.html) for the resources.
Click  next to the Web Map name to enter [Update resource](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-resource) dialog.
On the Settings tab in the Layers editing field select **Disable** in the dropdown menu.

# feature_table.html.md
# Managing Feature table
In NextGIS Web you can manage your geodata directly, without needing to display it on a map. View, filter, create, edit and delete features using Feature table.
You can open the Feature table [on a separate page](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-blank) or [on a Web Map](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-webmap).
#### SEE ALSO
[Edit the layer fields](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#ngw-attributes-edit) used to form the feature table.
## Feature table on a separate page
Press the  “Table” icon opposite the resource name or select the Table action for the vector layer in the features pane on the right.
Feature table allows to perform the following operations with the selected entry (see [Fig. 370.](#admin-table-objects1-upload)):
1. [Open selected entry](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-view)
2. [Create new entry](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-create) (new feature)
3. [Edit entry](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-edit)
4. [Delete entry](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-delete)
5. [Show the total feature count](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-table-other-tools)
6. [Search and filter by attribute values](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#table-search-filter)
7. Save as a file (choose between advanced and [quick export](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-export))
8. [Refresh the table](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-table-other-tools)
9. Select displayed fields in the [table settings](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-fields)

Also you can open the Feature table on the Web Map. In this case there are some additional map-related tools.
## Feature table on a Web Map
There is another way to open Feature table.  open a Web Map that has the layer in question added to it.

A Web Map will be opened with a layer tree (left) and a map (right). To view a feature table select the required layer in layer tree and then select “Feature table” command in the Layer drop down menu at the top of layer tree [Fig. 372.](#map-and-tree-layers-pic):

All tools of the Feature table are available, as well as some map navigation tools:

1.  Go to (after a click the selected feature will be displayed on the map)
2.  Zoom to filtered features
3.  [Filter features by area](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-filter-area)
Select a row in feature table to navigate to the feature on a map, it will be highlighted (see [Fig. 374.](#ngweb-webmap-attribute-table)). For the selected feature you can open a window with its properties, edit it or delete it.
In feature table tab you have an option to dynamically filter records. When user types a text the contents of the window are filtered leaving only the records that match the search text. Filter by area option is also available ([more on how to use it](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#filter-layer-features-on-the-web-map-by-area)).

## Search and filter
Click on the header of any column to sort the table by that attribute’s values.
In the top right corner you’ll find the search bar. Enter any text in it. The table contents are filtered, displaying only the features that have the search text in one of the attributes.

You can also create more complicated filters. Click on the funnel icon  next to the search bar and add filter conditions. You can use logical operators AND (select “ALL”) and OR (select “ANY”).
Available conditions:
* Equal / Not equal
* In list / Not in list
* Is NULL / Is not NULL
* Matches / Does not match (ILIKE operator, case insensitive)
For example, there are several roads named “Adams Street” in the Boston area, and we need to filter out the bigger ones (OSM tag “highway=tertiary” and “highway=tertiary_link”) and only inspect the smaller ones. Add two conditions: 1) NAME is Equal to “Adams Street”; 2) HIGHWAY is Not In List “tertiary”, “tertiary_link”. Select “ALL” in the top left corner, that means that both conditions should be satisfied.
You can select a value from the dropdown list or start typing to find the one you need.

## Filter layer features on the Web Map by area
NextGIS Web has a tool in the Feature table that filters all layer features within a selected area. To choose area limits just draw them on the Web Map.
Open the feature table and click on the  button. In the dropdown menu select the geometry of the area:
* circle (click twice on the map, to choose the center of the circle and its size, the radius length is shown in meters)
* line (features intersected by the line will be filtered)
* rectangle (click on diagonally opposite apexes)
* free-hand drawn polygon (each click creates an apex, the area covered by the polygon is highlighted; to finish the shape, double-click on an apex, the polygon will be completed automatically)

Now the feature table only contains the features within the selected area. The tool button will have the current area shape on it. In the dropdown menu you can use one of the following options:
* Show/Hide the outline and fill of the selected area
* Zoom to the filtering area
* Clear filtering geometry

To set the map extent displaying all the filtered features, click .
You can use quick export to save the filtered features in a variety of common geodata formats. Click **Save as** and in the dropdown menu select either [quick export](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#feature-export) with default settings or [advanced export](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-vector-export) to modify the settings.
See feature filtering in action:
Watch on [youtube](https://youtu.be/q946UruxUb0?si=gXo0OMG3x-2dIsac).
## View feature entry
You can view any entry of the feature table in a pop-up or on a separate page. Select the entry and click **Open**.

Click the  icon next to the **Open** button to view the entry on a new page.
## Create new feature
You can use the Feature table to add a new feature to the layer. Click  **Create**.

You can add a custom Description and Attachments on the corresponding tabs. The number of attachments is not limited. For each attached file you can add an indivisual description.

On the Geometry tab you can draw the feature’s geometry:

Click **Save** to finish creating new feature. An entry will be added to the Feature table.
## Edit features
Select an entry and click  **Edit**. In the pop-up dialog you can modify the attribute values, description and geometry and manage attachments.
Tabs that have unsaved changes are marked by a blue dot.

Click **Save** to finish editing. All the edits are saved to the layer.
You can also edit features [on a Web Map](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html) or in the desktop app QGIS [via NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/resources.html#connect-data-export) plugin.
## Delete feature
You can use Feature table to delete features from the layer. Select the entry and click  **Delete**.
Confirm deletion in the pop-up dialog.

## Export to file
To quickly save the filtered entries to a file, click **Save as**, then in the dropdown menu select **Quick export** and choose the file format.

Also you can select **Advanced export** and customize the settings ([more on export settings](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-vector-export)).
## Displaying selected fields and feature edit information
You can select which fields of the feature table to display. Press “Open table settings” button in the right corner and untick the fields you want to hide.

If [feature versioning](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic) is enabled, at the bottom of the list you’ll find an additional unticked field. It is a virtual “Last changed” field. It contains date and time of the most recent edit made to the feature as well as the username.
The first change logged is the time the versioning is enabled.

## Other tools
Click on the # hashtag button to see the current feature count.
Click  to refresh the table so that it includes the latest changes made elsewhere.
# field_combiner.html.md
# Field combiner
Concatenates values of several fields and writes it to the target field.
Inputs:
* Web GIS address. URL of your Web GIS, e.g. [https://demo.nextgis.com](https://demo.nextgis.com) and login/password if necessary;
* Layer ID. Numbers at the end of the layer’s URL;
* Source field 1. Name of the string field containing the 1st part, e.g. ‘id_prefix’;
* Source field 2. Name of the attribute containing the 2nd part, e.g. ‘id_date’. This part can be Integer, Float or Date, it will be converted to string;
* Source field 3. Name of the string field containing the 3rd part, e.g. ‘id_suffix’;
* Target field. Name of the field to store the combined value, e.g. ‘id_combined’;
* Order custom name. Custom name for the order (optional).
Outputs:
* Сhanged vector layer in Web GIS.
Launch the tool: [https://toolbox.nextgis.com/t/field_combiner](https://toolbox.nextgis.com/t/field_combiner)
Example:
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# field_value_changer.html.md
# Change attributes in layer group
The tool changes the value of the target attribute for the selected features in the layer group in the specified Web GIS resource on NextGIS platform. Features are selected according to the set value of the selected field.
NextGIS Web (NGW) is a geodata managing system. You can use it for free after [signing up](https://docs.nextgis.com/docs_ngcom/source/create.html). With NextGIS Web you can store geodata, create interactive online maps, give access to them to your teammates and clients, edit features directly on the map and in the feature tables, as well as process them with specialized Toolbox tools. [More on what NGW can do](https://docs.nextgis.com/docs_ngweb/source/general.html).
Inputs:
* Web GIS Address — The URL of your Web GIS (for example, http(s): //mywebgis.nextgis.com)
* Login - The username of the user who has the permission to write data to the specified resource
* Password - Web GIS user password
* Resource Group Identifier - Web GIS Resource Identifier that contains layer groups
* Initial field - the name of the initial field used to search for features
* Initial value - The value of the field used to select features (identifier)
* Target field - The name of the target field, which values you want to change
* Target Value - The attribute value, which will be applied
* Start year - Starting date of the time range (optional parameter)
* End year - Ending date of the time range (optional parameter)
#### NOTE
Start year and end year are optional parameters. These parameters allow you to limit the time range for the selected layers. To use these parameters, you must make sure that the time ranges are indicated in the names of the layers of the Web GIS resource. For example, in layer 1245_1246_rus_earl_v.1.0 1245 and 1246 the years are indicated. If these parameters are in use, you need to enter three or four digit values. Other parameters are **mandatory**.
Outputs:
* A CSV file that contains data about the initial and target fields, the identifier value, the previous and new values of the target field, as well as a list of hyperlinks to features that have been changed.
Launch the tool: [https://toolbox.nextgis.com/t/field_value_changer](https://toolbox.nextgis.com/t/field_value_changer)
**Try it out using our sample:**
Download [input dataset](https://nextgis.com/data/toolbox/field_value_changer/field_value_changer_inputs.zip) to test the instrument. Step-by-step instructions included.
Get the [output](https://nextgis.com/data/toolbox/field_value_changer/field_value_changer_outputs.zip) to additionally check the results.
# file_upload.html.md
# File upload
## Single file upload
Execute folowing request to upload a file:
### POST /api/component/file_upload/
File upload request.
* **Form Parameters:**
* **file** – file data
* **name** – file name
* **Status Codes:**
* [200 OK](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/200) – no error
Next multipart POST request follow. Request includes following form parameters:
name = “file name”
**Example request**:
```http
POST /api/component/file_upload/ HTTP/1.1
Host: ngw_url
Accept: */*
file=\tmp\test.file&name=testfile
```
Response in JSON format with file details returned on success:
**Example response body**:
```json
{
"upload_meta": [
{
"id": "0eddf759-86d3-4fe0-b0f1-869fe783d2ed",
"mime_type": "application/octet-stream",
"name": "ngw1_1.zip",
"size": 2299
}
]
}
```
Also you can create attachment using PUT method, in this case you do not need to set file name
**Example add attachment to feature on Python**:
```python
import requests
from contextlib import closing
import json
url_dst = 'https://sandbox.nextgis.com'
ngw_creds = ('administrator', 'demodemo')
feature_dst = '/api/resource/' + '3605' + '/feature/' #layer id
new_id = '2' #feature id
#Get file from internet, optionally with auth
with closing(requests.get('https://nextgis.ru/wp-content/themes/nextgisclean_wptheme/main-assets/img-en/header/logo.png', auth=ngw_creds, stream=True)) as f:
#upload attachment to nextgisweb
req = requests.put(url_dst + '/api/component/file_upload/', data=f.content, auth=ngw_creds)
req.raise_for_status()
#on some servers needed data=f.content instead
attach_data = {}
attach_data['file_upload'] = req.json()
attach_data['name'] = 'Picture.png'
#add attachment to nextgisweb feature
url=url_dst + feature_dst + str(new_id) + '/attachment/'
req = requests.post(url, data=json.dumps(attach_data), auth=ngw_creds)
req.raise_for_status()
```
**Example of forming multipart POST body in Qt**:
```c++
QHttpMultiPart *multipart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart part;
part.setHeader(QNetworkRequest::ContentDispositionHeader,
QVariant("form-data; name=\"file\"; filename=\"form.ngfp\""));
part.setHeader(QNetworkRequest::ContentTypeHeader,
QVariant("application/octet-stream"));
part.setBody(file_contents); // pass QByteArray reference
multipart->append(part);
```
## Multiple file upload
For multiple file upload execute the following request:
### POST /api/component/file_upload/
Multiple files upload request
* **Form Parameters:**
* **name** – must be “files[]”
In `name` field must be file name and path (multipart POST request).
Response in JSON format with files details returned on success:
**Example response body**:
```json
{
"upload_meta": [
{
"id": "b5c02d94-e1d7-40cf-b9c7-79bc9cca429d",
"mime_type": "application/octet-stream",
"name": "grunt_area_2_multipolygon.cpg",
"size": 5
},
{
"id": "d8457f14-39cb-4f9d-bb00-452a381fa62e",
"mime_type": "application/x-dbf",
"name": "grunt_area_2_multipolygon.dbf",
"size": 36607
},
{
"id": "1b0754f8-079d-4675-9367-36531da247e1",
"mime_type": "application/octet-stream",
"name": "grunt_area_2_multipolygon.prj",
"size": 138
},
{
"id": "a34b5ab3-f3a5-4a60-835d-318e601d34df",
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shp",
"size": 65132
},
{
"id": "fb439bfa-1a63-4384-957d-ae57bb5eb67b",
"mime_type": "application/x-esri-shape",
"name": "grunt_area_2_multipolygon.shx",
"size": 1324
}
]
}
```
# filter.html.md
# Search and filter
In NextGIS Connect you can [search resources by name](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-search-name), [url](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-search-url) or [metadata](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-filter-metadata) or [filter](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-filter-expression) the resource tree using expressions.
To open the search/filter bar, press  button in the plugin toolbar.
## Search by name
To search by name, enter word(s) or symbol(s) that are part of the resource name (use part of the word if you’re not sure what form it is in). The resource tree will be filtered to only display the resources that have the entered symbol combination in their names and paths to those resources in the tree. The search results are marked in bold.
Keep in mind that letters with diacritical signs, such as é or ü are considered separate symbols. To find all the variations of the spelling used in the Web GIS, enter a part of the name or use an [expression with wildcards](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-filter-expression).
To find the exact match, enclose the search words in quotation marks.
## Search by URL
If you have a link to a Web GIS resource you can find it in the NextGIS Connect resource tree by pasting the URL into the search bar. The layer tree will display the path to the resource.

If you know the resource ID, you can find it in the layer tree by using an [expression](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-filter-expression) or by adding it to the Web GIS URL, following the template `https://mywebgis.nextgis.com/resource/id`, e.g. [https://experiments.nextgis.com/resource/200](https://experiments.nextgis.com/resource/200).
## Filter by expression
To filter the resource tree by parameters other than the resource name (see the full list below) use expressions with conditions `=, IN, ILIKE`. As for logical operators `AND` and `OR`, you can use either of them several times in an expression, but not combined with the other.
Examples of expressions:
`@type ILIKE "wfs%" OR @name ILIKE "%wfs%"`. The Connect panel will show all the WFS connections, layers and services as well as resource that have “wfs” in their name (e.g. a Web Map called “WFS demo”).

`@owner = 4 AND @type = "raster_layer"`. The Connect panel will show all raster layers owned by the user with ID=4.

You can filter resources by:
* `@id` – identification number of the resource. You can also use it to [search by URL](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-search-url);
* `@owner` – all resources owned by the user with the entered ID;
* `@parent` – identification number of the parent resource, all its direct subresources will be displayed (e.g. all resources in a group or all styles and forms of a layer), to filter the other levels of subresources too use @root;
* `@root` - identification number of the resource, all its subresources, their subresource and so on, will be displayed.

Values for the above expressions are entered as numbers, no quotation marks. [Where to find these numbers.](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-find-id)
Administrators also can enter usernames for search by owner.
* `@type` – resource type (resource group, vector layer, lookup table etc), see the full list of possible values below
* `@name` – resource name, similar to [search by name](https://docs.nextgis.com/docs_ngconnect/source/filter.html#ngc-search-name), but can be combined with other parameters. `@name = "text"` searches for exact matches, while the simple name search uses the expression `@name ILIKE "%text%"`
* `@keyname` – resource key
Values of these parameters are strings, they should be enclosed in quotation marks or apostrophes. Also you can add one of the wildcards: `_` – any symbol or `%` – any number of any symbols.
As an example, see how it works for the expression @name ILIKE …
* `'%s'` – any string that ends with the letter S, for example “Track**s**”
* `'s%'` – any string that starts with the letter S, for example “**S**entinel”
* `'l%s'` – any string that starts with a the letter L and ends with the letter S, for example “**L**as Vega**s**” or “**L**ake**s**”
* `'_s%'` – any string that has the letter S in the second position, for example “O**s**lo”

## Metadata search
NextGIS Connect also allows search by metadata. To activate it, press the downward arrow next to the filter icon  and select “By metadata”.
Metadata is entered as a key-value pair, in two separate fields.

You can pre-enter a list of metadata keys to choose from in the [Settings](https://docs.nextgis.com/docs_ngconnect/source/ngc_settings.html#ngc-set-search).
## Resource types
Use the following values for the resource type search:
* Basemap – baselayers
* Collector project – collector_project
* Demo project – demo_project
* File bucket- file_bucket
* Form – formbuilder_form
* Lookup table – lookup_table
* MapServer style – mapserver_style
* OGC API – Features service – ogcfserver_service
* PostGIS connection – postgis_connection
* PostGIS layer – postgis_layer
* QGIS raster style – qgis_raster_style
* QGIS vector style – qgis_vector_style
* Raster layer – raster_layer
* Raster style – raster_style
* Resource group – resource_group
* SVG marker library – svg_marker_library
* Tileset – tileset
* TMS connection – tmsclient_connection
* TMS layer – tmsclient_layer
* Tracker – tracker
* Trackers group – trackers_group
* Vector layer – vector_layer
* Web Map – webmap
* WFS connection – wfsclient_connection
* WFS layer – wfsclient_layer
* WFS service – wfsserver_service
* WMS connection – wmsclient_connection
* WMS layer – wmsclient_layer
* WMS service – wmsserver_service
## How to find identification numbers
ID of a resource, as well as user ID, can be found in the URL while viewing a Web GIS in a browser.
To find out the ID of resource, open its page (you can do it from the Connect panel context menu or from the Layers panel if the resource is added to QGIS). The number at the end of the URL is the resource ID.

To learn user ID, in the Web GIS go to the [Control panel](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-control-panel), open [Users](https://docs.nextgis.com/docs_ngweb/source/users.html) section, find the user you need and enter the Edit mode (or just hover the cursor over the pencil icon to see the link without opening the page, if your browser allows it).

# fix_geometries.html.md
# Fix geometries
Fixes incorrect geometries in vector files. To find out if a vector file has invalid geometries, use [Check geometries](https://toolbox.nextgis.com/t/check_geometries).
Inputs:
* ZIP archive with vector files. Only single-file formats are supported (Geopackage, GeoJSON, etc., but **not** ESRI Shapefile).
Outputs:
* File with fixed geometries in the same format as input.
Launch the tool: [https://toolbox.nextgis.com/t/fix_geometries](https://toolbox.nextgis.com/t/fix_geometries)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# flatten.html.md
# Strip ZM from vector layer
The tool converts vector file to same format stripping ZM measurements. E.g., converts geometries from PolygonZ into Polygon.
Input:
* Source data - vector file in GeoPackage or GeoJSON format. Geometries could contain Z and/or M measurements.
Output:
* GeoPackage or GeoJSON file without ZM coordinates in geometry.
Launch the tool: [https://toolbox.nextgis.com/t/flatten](https://toolbox.nextgis.com/t/flatten)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# flood_analysis.html.md
# Flood Susceptibility Analysis
Terrain-based flood susceptibility analysis using TWI, log-transformed flow accumulation, inverse slope, inverse stream distance, and inverse TPI. Produces a Flood Susceptibility Index (FSI) scaled 0-100 with 5-level classification.
Inputs:
* Terrain Analysis Package (ZIP). ZIP file from [Comprehensive Terrain Analysis](https://toolbox.nextgis.com/t/terrain_analysis) containing DEM, slope, TWI, flow accumulation, TPI, streams, flow direction, and manifest.json
* Weight: TWI. Weight for the Topographic Wetness Index indicator (default: 0.30)
* Weight: Flow Accumulation. Weight for the log-transformed flow accumulation indicator (default: 0.25)
* Weight: Slope (inverted). Weight for the inverted slope indicator — flat areas have higher flood risk (default: 0.20)
* Weight: Stream Distance (inverted). Weight for the inverted stream distance indicator — closer to streams means higher risk (default: 0.15)
* Weight: TPI (inverted). Weight for the inverted TPI indicator — depressions have higher flood risk (default: 0.10)
* Hotspot Threshold. FSI value above which areas are classified as flood hotspots (default: 70)
* Spectral Indices Package (ZIP). Optional ZIP from spectral_indices with vegetation index aggregates. When provided, a vegetation indicator is added to the weighted overlay.
* Weight: Vegetation Index. Weight for the vegetation index indicator (default: 0.10). Only used when spectral_zip is provided. Other weights are scaled down proportionally.
Outputs:
* Flood Analysis Package (ZIP). ZIP archive with flood susceptibility rasters, vectors, statistics, and manifest
* Summary. Human-readable summary of the flood analysis results
* Manifest JSON. JSON manifest string describing all outputs
Launch the tool: [https://toolbox.nextgis.com/t/flood_analysis](https://toolbox.nextgis.com/t/flood_analysis)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# forestplots_field.html.md
# Create forestplots scheme for Garmin
The tool generates forest field plots in KMZ format ready to upload to Garmin devices. Areas located closer than 10 m from the plot border are discarded. A buffer zone is added around the plot at a distance of 50 m.
Inputs:
* Input polygon dataset. Supported formats are zipped shapefile, MapInfo TAB or OGR-compatible file. Must contain only one feature without rings.
* Step between points. Distance between plots in meters. Default 55 meters.
Outputs:
* KMZ file with forest field plots ready to upload to Garmin devices.
* Separate JPG file with forest plots scheme.
Launch the tool: [https://toolbox.nextgis.com/t/forestplots_field](https://toolbox.nextgis.com/t/forestplots_field)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# form_elements.html.md
# Form elements
In the form editing interface on the left there is a toolbar that contains all the elements that can be added to a form.

To create a new form in the online builder, drag the elements from the list on the left to the middle field representing the device screen.
You’ll find detailed descriptions of all the elements below.
Form design elements:
* [Label](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#form-label)- text of the form interface: field names, instructions on entering data etc;
* [Spacer](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#form-spacer) - a blank space that separates parts of the form;
* [Tabs](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#form-tabs) - instead of scrolling up and down a single long form, you can divide it into tabs and switch between them.
Data entering elements:
* [Text box](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#text);
* [Check box](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#checkbox);
* [Date and time](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#datetime);
* [Coordinates](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#coordinates);
* [Distance meter](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#distance);
* [Average calculator](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#average);
* [Photo](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#photo);
* [System field](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#sytem);
* [Dropdown](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#dropdown);
* [Dual dropdown](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#dual_dropdown);
* [Radio group](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#radio);
* [Dependent dropdowns](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#dependet_dropdown).
## Label
This element allows you to add text to the form interface: field names, instructions on entering data etc.
Properties:
* **Label** - edit the text displayed on the form.

Label is not linked to any field of the layer.
## Spacer
Spacer allows you to add blank spaces between parts of the form.
## Tabs
Tabs are used to group other elements. You can add multiple tab sets to a form and manage the number of tabs in each of them.
In a form, some elements can be in tabs while others are outside tab sets.
To add a tab set, drag “Tabs” element to the form.
In the “Properties” section you can set the name of each tab. To add a new tab, click on the  symbol. To delete a tab, click on the X next to its name.

The current tab is underlined in blue.
### Adding elements to tabs
To add an element to a tab, drag it to it. The element will be added to the active tab marked in blue. Make sure that the element is within the tab set.

A form can have multiple tab sets as well as elements outside sets.

Elements placed in the tab that is not currently active are hidden. To edit them, switch to that tab.
## Text edit
An element for entering simple text or numbers.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Max. lines** - Maximum number of lines for this text field. Integer, between 1 and 256.
* **Initial value** - the text added to the field by default.
* **Remember last value** - if activated, inserts the value added for the previous feature.

## Checkbox
An element which allows user to pick from two values: true or false.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Label** - text displayed next to the check box.
* **Initial value** - if this box is checked, the check box in the form is checked by default.
* **Remember last value** - if activated, inserts the value added for the previous feature.

## Date and time
This elements allows to enter date, time or date+time.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Type** - date only, time only or date and time.
* **Initial value** - by default the Date and Time field enters the current date and time. You can set a different initial value using the calendar widget.
* **Remember last value** - if activated, inserts the value added for the previous feature.

## Coordinates
This element automatically saves current position of the data collector in string format.
Contains two fields: latitude and longitude.
Properties:
* **Longitude field** - select the field of the vector layer where the longitude data is to be recorded.
* **Latitude field** - select the field of the vector layer where the latitude data is to be recorded.
* **Hide** - the element will not be visible in the form, but the coordinates will be saved anyway.

## Distance meter
This element automatically measures distance between data collector and the entered point. To be able to calculate distance, enable geolocation.
Properties:
* **Field** - select the layer field to store the data from this element.

## Average calculator
An element which calculates the average value from some amount of entered values. For example, you can measure the trunk width of ten trees growing in the area, enter these numbers and click **Count**. The calculated average is recorded to the layer field.
Includes an interactive **Count** button.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Number of samples** - how many values should the data collector enter to calculate an average value.

## Photo
An element which allows to take photos with the camera of the device or to add them from the gallery.
Properties:
* **Max number** - maximum number of photos that can be added to a feature, (1-20).
* **Comment** - text under the added photo(s).

## System field
This element allows to automatically record the NextGIS ID or username of the user editing the layer.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Type** - you can store the username chosen either in NextGIS ID or within Web GIS.

## Dropdown
A dropdown menu to select one value from a predetermined list.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Remember last value** - if activated, inserts the value added for the previous feature.
* **Enable search** - user can start typing to search in available options.
* **Allow free input** - data collector can enter text that is not in the list of options.
* **Options** - a list of possible field values. Click **Edit** to enter the values.

Options are entered as a table. You can eter them manually or [import from CSV](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#import-csv).
To **add an option** type in the value that is stored in the layer attribute and the label displayed in the form dropdown (can be the same as the value).
#### IMPORTANT
Make sure to fill in both columns, or you won’t be able to save the form.
The right end of the row has the following buttons:
* Initial - set this option as the default;
* Clone - makes a copy of the row, it’s handy if you only need to modify a part of the value;
* Delete.
## Dual dropdown
Dropdown list with predetermined items split into two parts. For instance, showing a place name in two different languages.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Remember last value** - if activated, inserts the value added for the previous feature.
* **First label** - text displaed above the left part of the dropdown.
* **Second label** - text displayed above the second part of the dropdown.
* **Options** - a list of possible field values. Click **Edit** to enter the values.

Options are entered as a table. You can eter them manually or [import from CSV](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#import-csv).
To **add an option** type in the value that is stored in the layer attribute and two labels displayed in the form dropdown.
#### IMPORTANT
Make sure to fill in all the columns, or you won’t be able to save the form.
The right end of the row has the following buttons:
* Initial - set this option as the default;
* Clone - makes a copy of the row, it’s handy if you only need to modify a part of the value;
* Delete.
## Radio group
A list of predetermined values (data collector chooses only one item from the list). You can see all the options of the radiogroup, unlike the dropdown that you need to click to view the list.
Properties:
* **Field** - select the field of the vector layer where the data from this element is to be recorded.
* **Remember last value** - if activated, inserts the value added for the previous feature.
* **Options** - a list of possible field values. Click **Edit** to enter the values.

Options are entered as a table. You can eter them manually or [import from CSV](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#import-csv).

To **add an option** type in the value that is stored in the layer attribute and the label displayed in the form dropdown (can be the same as the value).
#### IMPORTANT
Make sure to fill in both columns, or you won’t be able to save the form.
The right end of the row has the following buttons:
* Initial - set this option as the default;
* Clone - makes a copy of the row, it’s handy if you only need to modify a part of the value;
* Delete.
## Dependent dropdowns
A pair of drop-down lists with predefined items. The item list of the secondary dropdown (bottom) depends on the items of the primary dropdown (top).
**Example:**
* Main list - a list of regions (1. Centre-Val de Loire; 2. Grand Est)
* Dependent list - departments of the regions (1.1. Eure-et-Loir, 1.2. Indre; 2.1. Ardennes, 2.2. Marne)
Properties:
* **Primary field** - select the field of the vector layer where the data from the first dropdown is to be recorded.
* **Secondary field** - select the field of the vector layer where the data from the second dropdown is to be recorded.
* **Remember last value** - if activated, inserts the value added for the previous feature.
* **Options** - a list of possible field values. Click **Edit** to enter the values.

Options are entered as a table. You can eter them manually or [import from CSV](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#import-csv).

To **add an option** type in the value that is stored in the layer attribute and the label displayed in the form dropdown (can be the same as the value).
#### IMPORTANT
Make sure to fill in both columns, or you won’t be able to save the form.
The right end of the row has the following buttons:
* Initial - set this option as the default;
* Clone - makes a copy of the row, it’s handy if you only need to modify a part of the value;
* Delete.
## Import options
If you need to add a long list of options to an element that allows picking one from a pre-set list (i.e. [Dropdown](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#combobox); [Dual dropdown](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#split_cb); [Radio group](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#radio); [Dependent dropdowns](https://docs.nextgis.com/docs_ngweb/source/form_elements.html#dependet_cb).), you can import it from a CSV file.
Select the element, in the Properties panel click **Edit** next to the Options field.

A dialog for options editing is opened. Click **Import**.

## Import options from CSV
In the options editing dialog select Import - From file. In the next dialog, upload a CSV file from your device.

Import settings dialog opens.

Select the table columns for:
* Value - what is recorded in the layer attribute;
* Label - what is displayed in the interface;
* Initial - column where the row that is to be used as the initial value is marked.
You can also set up:
* Delimiter;
* Quote character;
* Escape character;
* Encoding.
Once you’re satisfied with the result, click **Import**.

After the import you can pick the initial value, add more rows manually or delete some and rearrange the list. The options set up in this dialog can be exported as CSV.
Click **Done** to complete the editing.
### Import from Lookup table
If the list you need is already uploaded to your Web GIS as a [Lookup table](https://docs.nextgis.com/docs_ngweb/source/create_other.html#lookup-table), you can use it for the form element options. In the options editing dialog select Import - From lookup table. A resource picker appears.

Tick the lookup table and click **Pick selected**.

After the import you can pick the initial value, add more rows manually or delete some and rearrange the list. The options set up in this dialog can be exported as CSV.
Click **Done** to complete the editing.
# form_syntax.html.md
# General
This page describes the syntax of “form.json” file which is a part of NextGIS
Formbuilder project file (with “.ngfp” extension). The file uses the JSON
specification rules and is encoded in UTF-8.
# Syntax
Example of the “form.json” file which represents a form with two elements for
entering person’s name:
```json
[
{
"attributes" : {
"text" : "Person"
},
"type" : "text_label"
},
{
"attributes" : null,
"type" : "space"
},
{
"attributes" : {
"field" : "researcher",
"last" : true,
"max_string_count" : 1,
"ngid_login" : false,
"ngw_login" : false,
"only_figures" : false,
"text" : "John Smith"
},
"type" : "text_edit"
}
]
```
All elements are always arranged vertically on the form in a strict order, so
the root of the file is an array of objects.
* **
Watch on [youtube](https://www.youtube.com/watch?v=O3T3eiHigp4).
To create a gallery navigate to the resource group (folder) in which to add it.
Click **Create resource** button and select **Gallery**.

On the first tab you can enter a custom **name** for your gallery. It will be displayed in the resource list.
On the second tab add the gallery items by clicking the + buttons. Available items:
* Resource;
* Link;
* Group - resources and links can be organized in groups within the gallery.
Drag to change the order of the items. To add an item to a group, drag it onto the group title.
After adding some items you can click **Create** and view the gallery.
You can customize the general look of the gallery and its items.
## Gallery items
After adding an item click on it to view the properties panel on the right. Each type of item has specific settings.
### Resource
* Title: displayed on the item card (does not have to be the same as the resource name);
* Resource: name of the resource and link to its page;
* Action: what happens when you click on the item in the gallery. Variable options – depend on resource type:
> * **Go to resource** - for all types;
> * **Update resource** - for all types;
> * **Display resource** - for Web Maps and resource galleries.
* Cover: image used as background on the item card instead of the standard resource type icon. Max 5.0 MiB. Recommended ratio: 3:2 for grid, 5:4 for list.
* Description displayed when hovering over the item or to the right of the cover in the list. Formatting is supported.

### Link
* Title;
* Link: by default, the link to the Web GIS itself is used, but you can change it to any other URL;
* Cover;
* Description.

### Group
* Title;
* Description;
* Layout:
> * Grid
> * List
> * Rows
> * Columns
> * Masonry
If you don’t set a layout here, the default layout selected on the Settings tab is applied. Initially it’s grid.

## Gallery settings

On the Settings tab you can set up:
* Default **layout**, it is applied to all the groups that do not have a different layout set on the Gallery tab;
* Display or hide Web GIS header.
You can also add description and metadata on the corresponding tabs. Gallery description is displayed both on the resource page and in the gallery itself, below its title.

Click **Create** to finish the process. After the gallery is successfully created you are redirected to its resource page. Click  **Open** to view the gallery.
You can select a gallery as the [homepage of your Web GIS](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-homepage).
# gbif_download.html.md
# GBIF species observations to geodata
Launch the tool: [https://toolbox.nextgis.com/t/gbif_download](https://toolbox.nextgis.com/t/gbif_download)
Downloads species observations from the public GBIF API for a given bounding box, optionally filtered by taxon (scientific name), kingdom, quality grade, wildness and observation date. Hard limit: 10 000 records per run.
Inputs:
* Bounding box - draw your area of interest on the map or enter coordinates in decimal degrees (West, South, East, North in WGS84).
* Country code (ISO 3166-1 alpha-2) - two-letter country code (e.g. ‘DE’, ‘FR’, ‘US’). Filters by the country where the occurrence was recorded. Combined with ‘Bounding box’ if both are set (AND).
* Taxon name - scientific name (e.g. `Bubo bubo`). Leave empty to download all species in the area.
* Kingdom. Select one iconic taxon group (Birds, Plants, Insects, Fungi, Mammals, etc). Combines with ‘Taxon name’ if both are set. Options:
- Animalia
- Archaea
- Bacteria
- Chromista
- Fungi
- Plataea
- Protozoa
- Viruses
* Record type - which categories of GBIF records to include. ‘Wild observations & specimens’ (default) covers the typical ecological use case — it excludes zoo/botanical-garden (LIVING_SPECIMEN) records.
* Observation date from - Lower bound of observation date. Format: YYYY-MM-DD.
* Observation date to - Upper bound of observation date. Format: YYYY-MM-DD.
* Only with photo - restrict to records that have at least one image attached (mediaType=StillImage). Default: off.
* Only commercially reusable licences - restrict to records licensed CC0 or CC-BY (excludes CC-BY-NC). Default: off (all licences).
* Exclude records with geospatial issues - exclude records that GBIF has flagged with geospatial quality issues (hasGeospatialIssue=false). Default: on.
Outputs:
* GeoPackage with one point layer ‘observations’;
* Report;
* JSON.
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
#### SEE ALSO
* [iNaturalist species observations to geodata](https://toolbox.nextgis.com/t/inaturalist_download?from-related-tools=1)
* [Download Sentinel-2 and Landsat-C2L2 satellite data](https://toolbox.nextgis.com/t/download_and_prepare_l8_s2?from-related-tools=1)
* [KML to geodata](https://toolbox.nextgis.com/t/kml2geodata?from-related-tools=1)
# general.html.md
# General Information
NextGIS Web is a web mapping application designed to store, manage access and visualize geographic data.
NextGIS Web is [open source](../../glossary.md#term-Open-Source) software. NextGIS Web supports Open Geospatial Consorcium
([OGC](http://www.opengeospatial.org/)) open data exchange protocols and meets the modern requirements for application architecture implemented on the basis of free software ([Open Source](../../glossary.md#term-Open-Source)).
NextGIS Web allows:
1. Creation and display of maps.
2. Map navigation (zooming, shifting).
3. Manage the map through web-interface.
4. Vector ([ESRI Shape](../../glossary.md#term-ESRI-Shape), [PostGIS](../../glossary.md#term-PostGIS) etc) and raster data import.
5. Use of standart protocols ([WMS](../../glossary.md#term-WMS), [WFS-T](../../glossary.md#term-WFS-T), [TMS](../../glossary.md#term-TMS)).
6. Manage access rights for layers, groups of layers, maps and other resources.
7. Interaction through API.
Watch on [youtube](https://youtu.be/dsx-xo3McIo?si=Oo7lX8_FXiCdM2Nz).
NextGIS Web has server and client sides.
Server side stores and renders geodata. It’s written in Python using Pyramid framework. Client side is a user interface for interactive [geodata](../../glossary.md#term-geodata) management as maps and separate resources.
Client is written in JavaScript. System’s configuration is stored in a PostgreSQL database with a [PostGIS](../../glossary.md#term-PostGIS) extension. Page markup for user interface is written using HTML. Style for user interface is added using cascading style sheets – CSS. Queries to databases use SQL language.
NextGIS Web is a modular system with several core modules and extensions. Extensions could be enabled or disabled at the application configuration step. NextGIS Web components communicate with each other using internal API methods.
NextGIS Web is designed to operate in Linux operating system environment (Debian-based distributives are recommended, e.g. Ubuntu Server). Read more in section [Recommended software versions](#ngw-soft-req). NextGIS Web client-side works in all modern browsers.
User interface with a published Web Map is shown on [Fig. 279.](#webmap-sample).

## Key features of NextGIS Web
NextGIS Web has the following key features:
### Data layers
* Creation of raster and vector layers and data upload for them using web interface.
* Creation of [WMS](../../glossary.md#term-WMS) and [TMS](../../glossary.md#term-TMS) layers and connections to existing services.
* Creation of [PostGIS](../../glossary.md#term-PostGIS) layers and connection to layers in external databases.
* A set of standard basemaps: OpenStreetMap and others from [QuickMapServices](https://qms.nextgis.com/).
* WFS service.
* WMS service.
* Dictionary (with extension).
* File set.
* “Key-value” function, support for metadata.
* Export to various formats (see [full list here](https://docs.nextgis.com/docs_ngcom/source/data_export.html#how-to-export-data)).
### Access management
* Detailed settings of access rights for each connected layer.
* Setting of access rights for resources and resource groups.
### Rendering and symbology
* Symbology import from QGIS with automated conversion “for renderer”.
* Pluggable renderers: [MapServer](../../glossary.md#term-MapServer), [QGIS](../../glossary.md#term-QGIS) (import a project from desktop software
NextGIS QGIS with the same layers, styles etc.).
* Several symbology options for the single data layer.
### Web Maps
* Own set of layers and layer tree management for each map.
* Reuse of the same layer representation in different maps.
### User interface
* Layer tree.
* Layer groups.
* Navigation tools panel.
* Search by attributes.
* Bookmarks for fast access to some regions of the map.
* Layer description view.
* Feature table view for layer with fast switch between a table and a map.
* Annotations.
### Editing
* Editing of feature attributes.
* Editing of layer description.
* Adding of photos and other attachments.
* Editing features with WFS-T.
## Minimum hardware
Minimum hardware requirements for NextGIS Web software:
* 4 vCPU
* 8 GiB of RAM
* 250 GB HDD (SSD would be much better)
## Recommended software versions
Recomended browsers are:
* Google Chrome (version 118 or newer)
* Mozilla Firefox (version 115 or newer)
* Edge (version 116 or newer)
* Safari (version 17 or newer)
* Opera (version 104 or newer)
Microsoft Internet Explorer browser is not suppoted.
#### WARNING
NextGIS Web would probably work with other versions, but this is not garanteed.
Technical requirements for on-premise installations are listed [here](https://docs.nextgis.com/docs_ngweb_dev/doc/admin/install.html#system-requirements).
# generalization.html.md
# Advanced vector generalization
Simplification of vector layer features to reduce data volume.
Inputs:
* Vector layer. Layer in GeoPackage, GeoJSON or ESRI Shapefile (ZIP-archived) format
* Merge nodes closer than. The value (in coordinate system units) at which geometry nodes are merged. Default is -1 meaning no merging. Optional
* Number of iterations. An integer indicating the number of iterations of the simplification, smoothing, or shifting procedure. Optional
* Method of generalization. Choose a generalization method: douglas, douglas_reduction, lang, reduction, reumann, boyle, sliding_averaging, distance_weighting, chaiken, hermite, snakes, displacement;
* Max tolerance value (threshold). Number between 0 and 1000000000. If the method does not refer to this parameter, specify any number
* Number of points. An integer that specifies the number of points used in some methods. Optional. The default value is 7
* Reduction. A number from 0 to 100. In the simplification algorithm, it characterizes the percentage of points that are preserved relative to the original number of points. An optional parameter. The default value is 50
* Slide. A number from 0 to 1, characterizes the shift of the obtained point relative to the original. Optional parameter. The default value is 0.5.
* Minimum angle. A number from 0 to 180. Specifies the minimum angle between two consecutive line segments. Optional. The default value is 3
* Alpha. Number, parameter for the Snakes method. Optional. The default value is 1
* Beta. Number, parameter for the Snakes method. Optional. The default value is 1
[More on options for various algorithms](https://grasswiki.osgeo.org/wiki/V.generalize_tutorial)
Output:
* GeoPackage file with simplified features (geometries) in a ZIP archive.
Launch the tool: [https://toolbox.nextgis.com/t/generalization](https://toolbox.nextgis.com/t/generalization)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# geocodetable.html.md
# Geocode table
The tool processes addresses from a CSV file and adds its coordinates back to the file. A relevant geocoding license is needed.
Inputs:
* Source data - CSV file with a list of addresses. First row should contain field names. File should be in UTF-8 encoding.
* Field with address - name of the field that contains addresses in a source CSV file.
* Geocoder - specify one of the available geocoder providers. Note that only Nominatim is free, for others you need a license.
* API key - API key to run the chosen geocoder. For Nominatim leave empty.
#### NOTE
**How to get a geocoder API key**
> Google Geocoding API - [https://developers.google.com/maps/documentation/geocoding/usage-and-billing](https://developers.google.com/maps/documentation/geocoding/usage-and-billing)
Outputs:
* CSV file, containing two additional columns with latitude and longitude besides original data.
Launch the tool: [https://toolbox.nextgis.com/t/geocodetable](https://toolbox.nextgis.com/t/geocodetable)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# geodata2pmtiles.html.md
# Geodata to PMTiles
Generate PMTiles from vector or raster file. PMTiles is a single-file archive format for tiled data. A PMTiles archive can be hosted on a commodity storage platform such as S3, and used in web applications via HTTP queries.
Inputs:
* Input file. Vector or raster layer.
* Minimum zoom. 0-19
* Maximum zoom. 0-19
Outputs:
* PMTiles file
Launch the tool: [https://toolbox.nextgis.com/t/geodata2pmtiles](https://toolbox.nextgis.com/t/geodata2pmtiles)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# geom_paster.html.md
# Geometry Paster
#### NOTE
Qt6 compatible
With this plugin you can copy geometry from one feature and assign it to a different one. Source and target features can be in one layer or in different layers.
This way you get a “duplicate” of the feature keeping its style and attribute values intact.
1. Install plugin

1. Copy feature from the source layer.
2. Enable editing for the target layer.
3. Select the target feature and in the Edit menu select “Paste geometry”. Alternatively you can press  button in the toolbar.

On step 4 you can select multiple features. In that case the geometry is added to each of them.
Check out how the plugin works in our video:
Watch on [youtube](https://youtu.be/NMs5hDf5ndE?si=20Rwhy-2fluYzafT).
# geometry_changer.html.md
# Change geometries in layer groups
The tool changes the geometry of features in all the layers of a group in Web GIS on NextGIS platform.
NextGIS Web (NGW) is a geodata managing system. You can use it for free after [signing up](https://docs.nextgis.com/docs_ngcom/source/create.html). With NextGIS Web you can store geodata, create interactive online maps, give access to them to your teammates and clients, edit features directly on the map and in the feature tables, as well as process them with specialized Toolbox tools. [More on what NGW can do](https://docs.nextgis.com/docs_ngweb/source/general.html).
Three modes are available:
* **Delete** - the tool deletes the selected features. The selection is based on the specified values of a layer’s attribute field;
* **Add** - the tool adds new features from the uploaded ESRI Shapefile. The structures of the file and the layer must match. Otherwise, the tool will not be able to add new features;
* **Change** - the tool replaces the geometry value for features with the geometries from the uploaded Shapefile. The selection is based on the specified values of a layer’s attribute field. The attribute name in the SHP file and the Web GIS layer must match.
Inputs:
* Web GIS address. Example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com).
* Login. NextGIS ID or login of a user who has write access to the resource group;
* Password of that user;
* Group resource ID. ID of the Web GIS resource that contains the layer group;
* Source field. The name of the source field by which objects are searched.
* Mode. Select `DELETE`, `ADD` or `CHANGE`;
* Initial value. The value of the field by which objects are selected. If you need to specify multiple values, use a comma as a separator. The parameter is required in the Delete and Change modes.
* First year. Start of time range (optional).
* Last year. End of time range (optional parameter).
* Select SHP file. File upload is required in Add and Change modes.
#### NOTE
Start year and end year are optional parameters. These parameters allow you to limit the time range for the selected layers. To use these parameters, you must make sure that the time ranges are indicated in the names of the layers of the Web GIS resource. For example, in layer 1245_1246_earl_v.1.0 1245 and 1246 the years are indicated. If these parameters are in use, you need to enter three or four digit values. Other parameters are **required**.
Outputs:
* A CSV file that contains data on the selected mode, the source field and its value, a list of hyperlinks to features that have been changed. If there are errors, they will also be indicated in this file.

Launch the tool: [https://toolbox.nextgis.com/t/geometry_changer](https://toolbox.nextgis.com/t/geometry_changer)
**Try it out using our sample:**
Download [input dataset](https://nextgis.com/data/toolbox/geometry_changer/geometry_changer_inputs.zip) to test the instrument. Step-by-step instructions included.
Get the [output](https://nextgis.com/data/toolbox/geometry_changer/geometry_changer_outputs.zip) to additionally check the results.
# geopandas.html.md
# How to load data in GeoPandas
* [Order data](https://data.nextgis.com/en/) for your area of interest in GeoPackage format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Find out a name and a path to the target layer. For example: municipal boundaries (boundary-polygon-lvl6)
* Install and import geopandas in Python.
Showing the map:
```python
import geopandas
boundaries = geopandas.read_file("/tmp/data/boundary-polygon-lvl6.shp")
boundaries.plot(column="oktmo")
```

Calculate areas:
```python
boundaries["AREA"] = boundaries.to_crs("EPSG:32637").area / 10 ** 6
boundaries[["NAME_EN", "AREA"]].dropna()
```

# glossary.html.md
# Glossary
API
: A set of protocols, tools and procedures that an application (software or web service) provides for the use by external software. Web services API is typically a description of possible HTTP requests.
Basemap
baselayers
: Background of the map. All other layers are displayed on top of it. [How to add a basemap](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-map-basemaps)
Collector project
collector_project
: Type of resource in NextGIS Web, a project for data collection. Users connect to it via NextGIS Collector app to enter data in the field. [How to create](https://docs.nextgis.com/docs_ngcom/source/collector.html#collector-create-project)
Connection
PostGIS connection
TMS connection
WMS connection
WFS connection
postgis_connection
tmsclient_connection
wfsclient_connection
wmsclient_connection
: Type of resource in NextGIS Web, a connection to a remote server using standard protocols: PostGIS, TMS, WFS, WMS.
CORS
Cross-origin resource sharing
: A mechanism that allows a web page to access restricted resources from a server on a domain different than the domain that served the web page. See more in [Cross-origin resource sharing](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing).
CSS
Cascading Style Sheets
: Style sheet language used for specifying the presentation and styling of a document written in a markup language such as HTML or XML. [How to use CSS to change the look of your Web GIS](https://docs.nextgis.com/docs_ngweb/source/look.html)
CSV
: A format for storage of tabular data in plain text. The file contains a set of rows where columns are separated with commas or semicolons. The format is used for data exchange between programs if they can not read more complex formats. CSV could be used to store geodata: columns may store coordinates for points or geometry description in WKT or WKB formats.
Demo project
demo_project
: Examples showcasing NextGIS Web functionality. [How to use Demo projects](https://docs.nextgis.com/docs_ngcom/source/demoprojects.html).
detached layer
: Layer downloaded from Web GIS, stored locally and synchronized with the server.
DXF
AutoCAD DXF
: An open data file format developed by Autodesk to enable CAD data exchange and interoperability between AutoCAD on different computing platforms.
EPSG
IOGP’s EPSG Geodetic Parameter Dataset
: Public registry of geodetic datums, spatial reference systems, Earth ellipsoids, coordinate transformations and related units of measurement, originated by a member of the European Petroleum Survey Group. Catalog is available on [https://epsg.io/](https://epsg.io/). Most common codes are EPSG:4326 - WGS 84, EPSG:3857 - Mercator projection.
ESRI Shape
ESRI Shapefile
Shapefile
Shape
: Popular format for geodata files developed and supported by Esri company for interoperability between products of Esri and other software.
Extent
: The coordinate of the map’s boundary, usually 4 numbers. Extent identifies the area shown on the map.
fid
: Field containing the unique feature ID.
File bucket
file_bucket
: Special resource type available in Extended NextGIS on-premise. A storage for files of any kind. [How to create](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-file-bucket)
Form
formbuilder_form
: Subresource of a vector layer, a user-friendly interface for entering and editing data used in mobile apps NextGIS Mobile and NextGIS Collector. The file has \*.ngfp extension. [How to create a form.](https://docs.nextgis.com/docs_ngweb/source/collector.html#collector-create-form)
geographical feature
spatial feature
geofeature
geodata
: Digital model for material or abstract feature of real or
virtual world with assigned identifier, coordinates and attributes.
geographical information system
GIS
: Information system that operates with geographical data (geodata).
GeoJSON
: An open standard format designed for representing simple geographical features, along with their non-spatial attributes, based on JavaScript Object Notation.
The features include points, linestrings & polygons and multi-part collection of these types.
GeoPackage
: Open, standards-based, platform-independent, portable, self-describing, compact format for transferring geospatial information.
GeoTIFF
: Open geodata format for raster data representation in a TIFF format with metadata about georeferencing. Uses TIFF 6.0 specification, and adds some types of geotags that defines a type of cartographic projection, geographical coordinate system, geoid, datum and all other information required for precise spatial orientation of satellite image.
GLONASS
Global Navigation Satellite System
: Satellite navigation system. It provides an alternative to Global Positioning System (GPS) and is the second navigational system in operation with global coverage and of comparable precision.
GML
Geographic Markup Language
: XML grammar defined by the Open Geospatial Consortium ([OGC](https://www.ogc.org/standards/gml)) to express geographical features.
GPS
Global positioning system
: One of the global navigation satellite systems that provide geolocation and time information.
GPX
: GPS Exchange Format is an XML schema designed as a common GPS data format for software applications.
HEX
: 6-digit representation of the [RGB](#term-RGB) color model in the hexadecimal numeral system. The code starts with # followed by two digits representing red, two digits for green and two for blue. E.g. #f5df4d, a shade of yellow.
HSB
Hue, Saturation, Brightness
: A representation of RGB colors through three parameters: hue, saturation, brightness.
instance
: A single Web GIS with its unique URL.
integer
int
bigint
integral data type
: Data type that represents some range of mathematical integers. The ranges of values are: Int - signed: between -2147483648 and 2147483647; unsigned: between 0 and 4294967295. Bigint - signed: between -9223372036854775808 and 9223372036854775807; unsigned - between 0 and 18446744073709551615.
KML
Keyhole Markup Language
: The file [format](https://www.ogc.org/standards/kml/) used to display geographic data in an Earth browser such as Google Earth.
KMZ
: KMZ files are [KML](#term-KML) archived into ZIP.
LA
label attribute
: The values of the field marked as “label attribute” are used as feature labels on the map. [How to configure](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#ngweb-admin-layers-attr)
Lookup table
lookup_table
: Type of resource in NextGIS Web, a list of key-value pairs that can be connected to a field of a vector layer. [How to create](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-lookup-table)
MapInfo MIF/MID
: Map and database exchange file format of MapInfo software product. MIF-file contains Block with the description of attributive Data-columns and Blocks that stores Geomentry Objects. MID-file is CSV-like format to store the attributive Data. Each line in MID-file is related with the same order Geometry Block (Geometry Object) in MIF-file.
MapInfo TAB
: Geospatial vector data format for geographic information systems software. It is developed and regulated by Precisely as a proprietary format. Used in MapInfo Pro.
Mapnik
: Open source map renderer. Written on C++ and Python. Uses a AGG library and has a function of smoothing of features with high acuracy. It can read from ESRI formats, PostGIS, TIFF, .osm files, and also supports for any GDAL or OGR formats.
MapServer
: Server geographical information system with open source that is launched through CGI interface.
MapServer style
mapserver_style
: Subresource of a vector layer, necessary to display the data on a Web Map or in an app. See also QGIS vector style. [How to create](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#mapserver)
MVT
Mapbox Vector Tiles
: Vector tile standard. Uses PBF container for tiles.
NGID
: Account on the NextGIS platform with the email address used as login.
NGIDOP
NextGIS ID on-premise
: Authorization and user management server for NextGIS software deployed in local networks isolated from the Internet.
OAuth
: (Short for open authorization) is an open standard for access delegation, commonly used as a way for internet users to grant websites or applications access to their information on other websites but without giving them the passwords.
OGC API Features
OGC API - Features
OGC API — Features
: [OGC](https://www.ogc.org/standards-overview/) standard for publishing vector data with geometries, attributes and query filtering.
Open data
: Open data is data that can be freely used, re-used and redistributed by anyone - subject only, at most, to the requirement to attribute and sharealike.
Open Source
: Software with open source code. Source code of such software is available for view, study and update. This allows a user to participate in a process of development of open source software, to use a code for creation of new software and debugging — through borrowing of source code if that is allowed by license compatibility, or to study of used algorithms, data structures, technologies, methods and interfaces (as source code could essentially complete documentation or be a kind of documentation if there is no one).
PostGIS
: Extension for relational DBMS PostgreSQL for storage of geodata in a database. PostGIS has a support for spatial indexes R-Tree/GiST and geodata processing functions.
PostGIS layer
postgis_layer
: Layer added using a connection to a PostGIS data base on a remote server.
QGIS
: A user-friendly geographical information system with open source code, distributed under GNU General Public License. QGIS is a project of Open Source Geospatial Foundation. It works on Linux, Unix, Mac OSX, Windows and Android, supports for various vector, raster formats, databases and has a variety of functions.
QGIS raster style
qgis_raster_style
: Subresource of a raster layer necessary to display data on a Web Map or in QGIS desktop app.
QGIS vector style
qgis_vector_style
: Subresource of a vector layer, necessary to display the data on a Web Map or in an app. The file extension is \*.qml. See also MapServer style. [How to create QGIS style](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#ngw-qgis-style-file).
QML
: The main language for describing map styles in the NextGIS QGIS software. Vector and raster styles are edited in QGIS and saved to a file with QML extension. Internal representations is XML. Map styles in QML format are supported by NextGIS Web.
Raster layer
raster_layer
: Type of resource in NextGIS Web that stores geodata as regular pixel grid. The file format is GeoTIFF. [How to create](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-raster-layer)
Raster style
raster_style
: Subresource of a raster layer necessary to display data on a Web Map.
resource
: A component of NextGIS Web: a layer, a map, a service etc.
Resource group
resource_group
: In NextGIS Web it’s a folder/directory in the resource structure. [How to create](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#ngw-resourses-group)
RGB
: An additive color model in which the red, green, and blue primary colors of light are added together in various ways. Each color can have a value between 0 and 255. There are also [HEX](#term-HEX) color codes for HTML, CSS, SVG, and other computing applications.
SDK
software development kit
: Collection of software development tools in one installable package.
Service
ogcfserver_service
wmsserver_service
wfsserver_service
: Type of resource in NextGIS Web, an interface for requesting geo-registered map images using standard protocols: OGC API – Features, WMS etc.
SLD
Styled Layer Descriptor
: An XML schema specified by the Open Geospatial Consortium (OGC) for describing the appearance of map layers. A typical use of SLDs is to instruct a Web Map Service (WMS) or Web Feature Service (WFS) how to render a specific layer.
SRID
: Spatial Reference Identifier, unique identification number of a spacial reference system. EPSG code is often used.
SRS
Spacial Reference System
CRS
coordinate system
: A way for description of point location relative to selected axes.
SSL
Secure Sockets Layer
: Security protocol that provides privacy, authentication, and integrity to Internet communications.
SVG
: Scalable Vector Graphics (SVG) is an XML-based vector image format for defining two-dimensional graphics. In GIS systems is used to store icons used as map symbols.
SVG Marker Library
svg_marker_library
: Type of resource in NextGIS Web that stores SVG icons used in QGIS vector styles to display data on Web Maps, if the icons are not embedded in the style. [How to create](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#ngw-create-svg-marker-lib)
team
: A unit of user grouping in NextGIS. A Premium plan holder can share the Premium functionality with up to four other users by [adding them to the team](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management) and setting up [permissions](https://docs.nextgis.ru/docs_ngcom/source/teams.html#ngcom-auth-id-webgis) for them in the Web GIS.
Tile
Tiles
: Square images displaying part of a map split by a grid, often have the size of 255 X 255 and PNG format.
Tileset
: File or Web GIS resource containing map data split into standardized squares.
TMS
Tile Map Service
: A specification for Web Maps displayed by seamlessly joining dozens of individually requested image files over the internet. [OSGeo](http://www.osgeo.org/) standard that describes an access to representation of geodata through the Internet/Intranet without an access to geodata itself. The difference between [XYZ](#term-XYZ) and TMS is that the Y coordinate is flipped.
TMS layer
tmsclient_layer
: Layer containing tiles served via TMS protocol.
Tracker
: 1. Type of resource in NextGIS Web that creates a connection between a tracking device and the Web GIS.
2. Mobile app NextGIS Tracker that records tracks and sends them to Web GIS.
Trackers group
trackers_group
: In NextGIS Web it’s a folder containing tracker resources. [How to create](https://docs.nextgis.ru/docs_ngcom/source/tracking.html#tracking-create).
URL
Uniform Resource Locator
: A Uniform resource locator (description of location). Previously called Universal Resource Locator (URL). URL is a standardized way to record a resource address in the Internet.
Vector layer
vector_layer
: A type of geodata that stores information as a set of points, lines or polygons as well as the attribute data of the features.
versioning
: A mechanism that tracks all changes made to the vector layer features. [Learn more](https://docs.nextgis.com/docs_ngweb/source/version.html)
Web Map
webmap
: Type of resource in NextGIS Web that visualizes data from various sources in a Web client.
WFS
Web Feature Service
WFS-T
WFS service
: A web service that represents data in a vector GML format. Client gets both attributes and geometry. There are standard extensions:
> Transactional (WFS-T) - allows clients to send to WFS
> server new and updated data;
> Gazetteer (WFS-G) - a draft of a standard that adds a search and a query
> of items by dictionary of geographical names. Initially developed by USGS;
> Temporal - a draft of a standard that adds a temporal measurement;
> Versioning (WFS-V, WFSV) - allows to work with different versions of data
> (particular development of GeoServer project, not standardized by OGC).
WFS Layer
wfsclient_layer
: Layer added using WFS protocol.
WMS
Web Map Service
: A standard protocol for serving of georeferenced images through the Internet that are generated on server on a basis of data from a gis database.
The standard was developed and initially published by international organization [OGC](http://www.opengeospatial.org/) (Open Geospatial Consortium) in 1999.
WMS layer
wmsclient_layer
: Raster layer that displays data stored on a remote server and served via WMS protocol.
WMTS
Web Map Tile Service
: [OSGeo](http://www.osgeo.org/) standard protocol for serving pre-rendered or run-time computed georeferenced map tiles over the Internet.
XLSX
: A zipped, XML-based file format for representing spreadsheets, charts, in Office Open XML standard. Spreadsheets in this format can be used as geodata sources.
XYZ
Raster Tile Map
: Slippy map (in OpenStreetMap terminology) or Tiled Web Map is a map displayed by seamlessly joining dozens of individually requested image files over the internet. X, Y & Z denotes the numbering scheme to serve the images. The images are commonly of the size 256 X 256 in PNG format. The difference between XYZ and [TMS](#term-TMS) is that the Y coordinate is flipped.
# google_mymaps.html.md
# How to upload data to Google maps
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoJSON (QGIS) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Convert the desired layer or layers to KML format. For conversion, you can use any online converter, for example, [GeoConverter](https://geoconverter.hsr.ch/vector).
* Import the resulting KML file into the map in Google My Maps.

* Data is added to the map.

# gpkg2etab.html.md
# GeoPackage to MapInfo Enhanced TAB
Convert GeoPackage (GPKG) to Enhanced TAB (NativeX) for MapInfo Pro 15.2 and above.
If you have geodata with global coverage containing attribute values in a variety of languages, converting it in GDAL or QGIS may pose problems because Unicode characters are not supported for the format.
This tool allows you to preserve the correct symbols. The output encoding is UTF-8.
Inputs:
* Single GeoPackage file with one vector layer.
Outputs:
* ZIP archive with MapInfo Enhanced TAB (NativeX) result file.
Launch the tool: [https://toolbox.nextgis.com/t/gpkg2etab](https://toolbox.nextgis.com/t/gpkg2etab)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpx2exif.html.md
# Geotag photos using GPX track
Use timing information to assign coordinates to photos matching them with a GPX track. Coordinates are added to EXIF tags. If your camera doesn’t store coordinates or does so incorrectly, you can match photos made while recording a track by using timestamps.
Input:
* GPX file
* ZIP with photos
The tool can process photos with or without EXIF tags. Existing tags will be replaced with new ones.
Output:
* ZIP with photos that have new EXIF tags
Launch instrument: [https://toolbox.nextgis.com/t/gpx2exif](https://toolbox.nextgis.com/t/gpx2exif)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpxanimation.html.md
# GPS track animation for social media
Generate video dinamically drawing the line of your track on a map for posting in social networks like Instagram and TikTok.
Video is designed for simplicity: it has vertical aspect ratio and does not have labels. You will be able to overlay markers or labels while posting on social media.
Inputs:
* GPX file with track
Outputs:
* MP4 video
Launch the tool: [https://toolbox.nextgis.com/t/gpxanimation](https://toolbox.nextgis.com/t/gpxanimation)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpxclipbbox.html.md
# Clip GPX file by bounding box
Clip one GPX file by rectangular area to remove errors from signal bouncing or just trim the data to the exact area of interest.
Inputs:
* One GPX file or ZIP archive with one GPX file. Subdirectories are allowed;
* Extent bounding box - you can mark it on a map, draw it and then correct the numbers or enter the extent manually following the format ‘xmin, xmax, ymin, ymax’. Enter coordinates in WGS 84 (EPSG:4326), for example `139.75282797783194,35.62931134243268,139.77938217891602,35.677314929949524`.
Outputs:
* Clipped GPX file.
Launch the tool: [https://toolbox.nextgis.com/t/gpxclipbbox](https://toolbox.nextgis.com/t/gpxclipbbox)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpxdailysplit.html.md
# Split GPX file by days
Splits a GPX file tracks and waypoints by days (cut by midnight) and saves each day’s data to a separate GPX file.
Inputs:
* GPX file. Needs to be a single file. If you have several files, first merge them using [gpxmerge tool](https://toolbox.nextgis.com/t/gpxmerge);
* Time zone. GPX tracks store time in UTC. To split tracks at midnight, provide the time difference from UTC, ex. `+09:00`.
Outputs:
* ZIP archive containing GPX files, one for each day.
Launch the tool: [https://toolbox.nextgis.com/t/gpxdailysplit](https://toolbox.nextgis.com/t/gpxdailysplit)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpxmerge.html.md
# Merge GPX files
Merge multiple GPS logs in GPX format to one. Most programms open tracks one by one. With this instrument you don’t have to know in advance what day the information for a certain area was collected, all tracks will be viewed at once.

Additionaly, This instrument fixes GPX files damaged by power down.
Input:
* ZIP archive with GPX files. Subdirectories of several leverls are allowed. You can have files with the same name in different folders, the tool can process them anyway;
* Mode - select from the menu:
> * **Strict**: merge all content of GPX files using gpsbabel, may take long if there are many files.
> * **Quick**: concat XML code as string, remove GPX extensions, quick, data is simplified.
#### IMPORTANT
Archives inside the archive are not supported.
Output:
* Merged GPX. Resulting GPX file with all tracks merged.
* Skipped files. List of skipped/invalid files (if any).
Launch instrument: [https://toolbox.nextgis.com/t/gpxmerge](https://toolbox.nextgis.com/t/gpxmerge)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# gpxtracksplit.html.md
# Split GPX into individual tracks
Split a GPX file into separate GPX files with one track in each file
Inputs:
* One GPX file. You can merge multiple GPX fies into one using [Merge GPX Tracks](https://toolbox.nextgis.com/t/gpxmerge) tool.
Outputs:
* ZIP-archive containing split GPX tracks.
Launch the tool: [https://toolbox.nextgis.com/t/gpxtracksplit](https://toolbox.nextgis.com/t/gpxtracksplit)
Example:

**Try the tool in action by downloading our example:**
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# grid.html.md
# Meter grid

The tool generates a grid within the boundaries of features of a vector layer or a bounding box. The grid size is set in meters. Features can be anywhere in the world.
Inputs:
* Step. Grid cell size in meters;
* Mode. Squares or points. Default: points;
* Clip. How to clip the grid: 1) By feature boundaries, 2) Keeping all grid cells that intersect boundaries, 3) Keeping all grid cells in the extent;
* Boundary polygon vector file in Geopackage format. Multipolygons are supported. Calculation time depends on the number of nodes in the boundary layer;
* Extent. Set the extent on the map or upload as file;
* Grid alignment. Mode of clipping edges of grid. 1) Vertical - the grid looks vertical in WGS 84 (EPSG:3857) projection, but angles and distances may be distorted.; 2) Precise - a grid with more precizely matching angles and distances, however it will look tilted in EPSG:3857.
Output:
* GeoPackage containing the grid. Each cell/point of the grid has the following attributes: number (cells are numbered vertically, top to bottom, left to right, starting with the first left column even if it doesn’t reach the top), row_index and col_index. To display the numbers, enable lables in the layer style settings and select the desired attribute.

Resulting grids with different settings:

Launch the tool: [https://toolbox.nextgis.com/t/grid](https://toolbox.nextgis.com/t/grid)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# grunt.html.md
# Convert data about burial of sea bottom soil
Tool converts data from [catalog](https://rpn.gov.ru/opendata/7703381225-grunt?sphrase_id=1181168) into vector file.
Input:
* XLSX file - Contains coordinates of burial places
Output:
* GPKG file in WGS-84
Launch the tool: [https://toolbox.nextgis.com/t/grunt](https://toolbox.nextgis.com/t/grunt)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# hello.html.md
# Hello, World!
Allows to test Toolbox service. Returns greeting string for a given name.
Input:
* Name - please, type, how you want to be greeted.
* Delayed start - set a delay for the tool’s run in seconds. Optional field.
Output:
* String with greeting “Hello, (your name)”
Launch the tool: [https://toolbox.nextgis.com/t/hello](https://toolbox.nextgis.com/t/hello)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# help.html.md
# Toubleshooting
## Styles compatibility between QGIS and NextGIS Web
Since original QGIS libraries do render layers in this extension, most styling and rendering options work well. However, there is a big difference between QGIS and NextGIS Web in how they compose layers. QGIS renders layers together and places labels on top of all layers. NextGIS Web, on the other hand, renders layers one-by-one (or even tile-by-tile) and stacks them together on a client side. That’s why NextGIS Web rendering of QGIS styles may differ in the following ways:
* Blending options don’t work;
* Labels from diffenent layers may overlap;
* Expression-driven SVG markers don’t work;
* Masking doesn’t work at all, as it part of a project, not of a layer.
To check what version of QGIS is currently used for rendering in the Web GIS, see the [System information](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#ngw-system-info) section of the [Control panel](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-control-panel).
## How to get help or send a bug report
If you haven’t found an answer to your question in this tutorial try [full documentation](http://docs.nextgis.com/docs_ngweb/source/index.html).
You can send bug-reports to [info@nextgis.com](mailto:info@nextgis.com).
Direct support and more functionality are available under Premium plan ([details](http://nextgis.com/nextgis-com/plans)).
Informal support and discussions regarding the service are available in the public channel [NextGIS](https://t.me/nextgis_talks)
# highcharts.html.md
# How to vizualize data with Highcharts Maps (highcharts.js)
* [Order data](https://data.nextgis.com/en/) for your area of interest in GeoJSON format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Select a layer.
* To add a layer to Highcharts Maps you need to host it first (i.e. put it in a place, accessible via hyperlink) and specify it’s location:
```javascript
Highcharts.getJSON('https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/germany.geo.json', function (geojson)
```
* There are a lot of [examples of data usage](https://www.highcharts.com/demo/maps/geojson) in Highcharts Maps documentation, source code is also available.
* The example of NextGIS Data usage is presented below, see [live example](https://jsfiddle.net/rendrom/nhv4mu5z/) as well.

#### NOTE
Highcharts Maps library handles well fast visualization of spatial data statistics. However such libraries as Mapbox GL JS, Openlayers and Leaflet are better for interactive mapping. Examples of data upload from json files to forementioned libraries can be found here: [https://jsfiddle.net/rendrom/a1xf63bk/](https://jsfiddle.net/rendrom/a1xf63bk/) and [https://jsfiddle.net/rendrom/yg6xz9kj/](https://jsfiddle.net/rendrom/yg6xz9kj/). [NextGIS Frontend](https://github.com/nextgis/nextgis_frontend) libraries are used for these examples.
#### HINT
For faster and better data rendering performans on the web, additional generalization, thinning and modification of initial data can be needed. The resulting file would be smaller in size, having less nodes in polygons and lines and wouldn’t contain unnecessary attributes.
# hospital.html.md
# How to select all of my city’s hospitals on the map
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoPackage format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Open a preset GIS project in [QGIS](https://qgis.org/en/site/forusers/download.html).
* Hospitals are a part of the “Buildings” layer. In the attribute table of this layer, the “Building” field contains information about the purpose of the building. Almost all possible types of buildings are shown in this article. From here we learn that hospitals are referred to as “hospital”.

* In the attribute table of the layer the “ADDR_CITY” field also contains information about the settlement within which a particular object is located.
#### WARNING
However this field is not always filled in, since it may be assumed that the belonging to a settlement can be determined from the location of the object on the map. Therefore, use this field to filter objects in the attribute table with caution.
* In this example we want to find all hospitals in the city of Newry. To do this, in the menu bar of the attribute table, click “Select / filter features using form”.

* In the changed window in the “Building” field enter “hospital”, in the “ADDR_CITY” field - “Newry”. On the right, opposite to the fields, select “Equal to (=)” in the drop-down list, then click “Select features”.

* Objects that meet the filter criteria will be selected both in the attribute table and on the map. For comfortable viewing , click on the “Switch to table view” button and select “Move selection to top”.

# howtos.html.md
# How to…
* [How to add NextGIS Web elements to Favorites](https://docs.nextgis.com/docs_ngweb/source/favorites.html)
* [How to change Fonts](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-fonts)
* [How to manage Spacial Reference Systems](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html)
* [How to hide the ability to export data](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-res-export)
* [How to set up Address Search](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#ngw-contr-panel-webmap-search)
* [How to enable CORS for your Web GIS](https://docs.nextgis.com/docs_ngweb/source/cors.html)
* [How to change the look of your Web GIS](https://docs.nextgis.com/docs_ngweb/source/look.html)
* [How to change the homepage address](https://docs.nextgis.com/docs_ngweb/source/look.html#ngw-homepage)
* [How to restore your Web GIS from backup](https://docs.nextgis.com/docs_ngweb/source/infowebgis.html#backup-policy)
* [How to manage data storage](https://docs.nextgis.com/docs_ngweb/source/create_resource.html#ngw-resource-group)
* [How to use any layer in your Web GIS as a basemap](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#how-to-use-any-layer-in-your-web-gis-as-a-basemap)
* [How to set up legend visibility](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-legend)
* [How to copy a Web Map](https://docs.nextgis.com/docs_ngweb/source/webmap_clone.html)
* [How to enable caching](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#ngw-create-tile-cache)
* [How to enable Web Map annotations](https://docs.nextgis.com/docs_ngweb/source/annotation.html)
* [How to move resources within Web GIS](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-move-resource)
* [How to delete data](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-delete-resource)
* [How to add descriptions and metadata for resources](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada)
* [How to edit data](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html)
* [How to add photos, panoramas and manage attachments](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngw-add-photos)
* [How to export data on a Web Map](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-vector-export)
* [How to optimize Web Map performance](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-webmap-optimize)
* [How to print a Web Map](https://docs.nextgis.com/docs_ngweb/source/print.html)
* [How to change Web GIS domain](https://docs.nextgis.com/docs_ngweb/source/domain.html)
* [How to enable Google Analytics](https://docs.nextgis.com/docs_ngweb/source/analytics.html)
* [How to enable the monitoring of moving objects (tracking)](https://docs.nextgis.com/docs_ngcom/source/tracking.html)
* [How to begin data collection in your Web GIS](https://docs.nextgis.com/docs_ngcom/source/collector.html)
# i18n.html.md
# Internationalization and localization
Internationalization and localization of NextGIS Web is built on top of
[gettext](http://www.gnu.org/software/gettext) and [babel](http://babel.pocoo.org/) libraries. The workflow for working with messages is
standard for projects based on gettext:
1. Extract messages to translate from sources to `.pot` file (`extract`)
2. Create or update `.po` files from `.pot` files (`update`)
3. Compile `.po` files into `.mo` files (`compile`)
Each NextGIS Web component becomes an independent domain in terms of the gettext
library. As a result, there is no way to internationalize messages that do not
belong to any component.
To be able to extract messages for translation, they must be marked up
appropriately. Below is described how to do this, as well as how to ensure the
display of already translated messages.
All operations on messages are performed using the `nextgisweb-i18n` command
line utility. To update translation in `nextgisweb_foo` you can do the
following:
```bash
$ nextgisweb-i18n update --locale ru nextgisweb_foo
$ nano package/nextgisweb_foo/nextgisweb_foo/locale/ru.po
$ nextgisweb-i18n compile nextgisweb_foo
```
The following standard gettext-like functions are supported for backend and
frontend:
- `gettext(message)`
- `ngettext(singular, plural, n)`
- `pgettext(context, message)`
- `npgettext(context, singular, plural, n)`
In addition, each of these functions has a formatter variant with the `f`
suffix: `gettextf`, `ngettextf`, `pgettextf` and `npgettextf`. They
return callables that perform string interpolation using Python string format
placeholders. For example:
```python
>>> print(gettextf("Hello, {}!")("Arthur"))
Hello, Arthur!
```
Template strings may contain one of the following:
- One anonymous placeholder: `Hello, {}!`
- Named placeholders: `Hello, {first} {last}!`
- Index-based placeholders: `Hello, {0} {1}!`
## Server side
### Python
Since Python code is executed on a server, the same application instance must be
able to serve users with different locales, it is necessary to use a two-step
work with messages: first, a message is marked as requiring translation, then
before displaying it to the user, it’s translated according to the user’s
preferences.
```python
from nextgisweb.env import gettext
@view_config(renderer='json')
def view(request):
tr = request.localizer.translate
return tr(gettext("Some message for translation"))
```
#### NOTE
Formatting with `gettext("Hello, {}!").format("Arthur")` and
`gettext("Hello, %s!") % "Arthur"` works but deprecated.
#### NOTE
Python formatting modifiers are not supported. To format numbers, convert
arguments to a string first.
Some formatting examples:
```python
from nextgisweb.env import gettextf
def user_info_message(tr, user):
return tr(gettextf("Your login is {kn} and full name is {dn}.")(
kn=user.keyname, dn=user.display_name
))
def percent_left_message(tr, percent):
return tr(gettextf("{} left.")("{:.2f}%".format(percent)))
```
### Mako
Some of the strings that require translation are also contained in Mako
templates. In fact, the work of mako templates is not much different from
Python. You don’t need import anything as it’s imported behind the scene.
Consider the following example:
```mako
The highlighted parts are the Web GIS URL and the resource ID of the vector layer.
You can use it in third-party web applications and map builders. This link is used to transmit the information about the layer. The layer’s style is configured on the client side.
You’ll find this link in the External access section of the resource page.

### Using MVT with NextGIS Frontend Libraries
To connect a vector layer as MVT to your application all you need is the URL of your Web GIS and the resource ID. Our team has developed JavaScript libraries for this purpose.
All libraries are available for free download on [NextGIS Frontend](https://code.nextgis.com/).
The service also provides examples of their use. Let’s take [one of these examples](https://code.nextgis.com/ngw-mapbox-examples-ngw-mvt-match-paint) to display a vector layer.
Add the link to the Web GIS to the “baseURL” line (32) and the resource ID to the “resource” line (38).

Open the HTML page in a web browser to see the map. You can configure additional map elements using NextGIS Frontend.

To display data from your Web GIS in external applications, you need to open [read access to the layer](https://docs.nextgis.com/docs_ngcom/source/permissions.html) in the Web GIS settings. Alternatively, you can specify Web GIS login credentials in the web application itself.
In the Web GIS settings, you need to [configure your CORS](https://docs.nextgis.com/docs_ngweb/source/cors.html) (Cross-Origin Resource Sharing) settings.
### Connecting MVT from NextGIS Web to QGIS
You can use the link to vector tiles generated by NextGIS Web in QGIS to set up representation of a vector layer from your Web GIS in the desktop application.
To connect the tiles, select Layer -> Add layer -> Add Vector Tile Layer in QGIS.

You can use the layer as a basemap, customize its style, identify objects and view attribute descriptions.
## TMS service
NextGIS Web is a TMS server. Layers and styles created in it can be accessed via any software supporting TMS protocol. You will need the URL for the TMS service.
TMS service is automatically created for the following resource types:
* Vector layer style
* Raster layer style
* WMS layer
* Web Map
You’ll find this link in the External access section of the resource page.

The link should look like this:
This link allows you to use any layer created in Web GIS [as a basemap](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-layer-as-basemap).
To use TMS service through GDAL utilities you need to create an XML file. You will need the TMS link.Enter these parameters to ServerUrl string in example below. The rest remains unchanged.
```xml
https://demo.nextgis.com/api/component/render/tile?z={z}&x={x}&y={y}&resource=234
-20037508.3420037508.3420037508.34-20037508.341811topEPSG:38572562564
```
## OGC API – Features service
Vector data uploaded to Web GIS can be published via OGC API Features protocol. This allows editing data with external applications.
The [OGC API Features](../../glossary.md#term-OGC-API-Features) service is configured in the same way as for a WFS service.
NextGIS Web acts as OGC API Features server and publishes OGC API Features services based on vector layers. Third party software can use these services to edit vector data on server. Supported OGC API Features protocol versions is 1.0.0.
To deploy a OGC API Features service press **Create resource** button and select **OGC API Features service** (see [Fig. 346.](#create-ogc-api-features-service-pic)).

Enter the name of the resource that will be displayed in the administrator interface.

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
Switch to “OGC API Features service” tab and add required layers to a list (see [Fig. 348.](#ogc-api-features-service-settings)) For each layer you can set a limit for the number of features returned from the vector layer. By default, the value is 1000.
If this parameter is set to empty, the limit will be disabled and all features will be returned to the client. This may result in high server load and significant timeouts in case of large data volume.

### Using OGC API Features service
After the resource is created, a URL for the OGC API Features service is available. You can use it in other software, for example **QGIS**.
You can [set access permissions for OGC API Features service](https://docs.nextgis.com/docs_ngcom/source/permissions.html#ngcom-permissions-auth-wms) if needed.
OGC API Features services can also be accessed with links of the following type ([basic auth](https://docs.nextgis.com/docs_ngweb_dev/doc/developer/auth.html) is supported):
```http
https://yourwebgis.nextgis.com/api/resource/208/ogcf
```
## WFS service
NextGIS Web acts as WFS server and publishes WFS services based on vector layers. Third party software can use these services to edit vector data on server.
Supported WFS protocol versions are 1.0, 1.1, 2.0, 2.0.2.
#### NOTE
Currently supported filters are Intersects, ResourceId (ObjectId, FeatureId).
To deploy a WFS service press **Create resource** button and select **WFS service** (see [Fig. 349.](#admin-layers-create-wfs-service)).

Enter the name of the resource that will be displayed in the administrator interface.
Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
On the “WFS service” tab add required layers to a list (see [Fig. 350.](#ngweb-admin-layers-create-wfs-service-url)). For each layer you can set a limit for the number of features returned from the vector layer. By default the value is 1000.
If this parameter is set to empty, the limit will be disabled and all features will be returned to the client.
This may result in high server load and significant timeouts in case of large data volume.

### Using WFS service
After the resource is created, a URL for the WFS service is available. You can use it in other software, for example **NextGIS QGIS**.
You can set access permissions for WFS service if needed. See [this section](https://docs.nextgis.com/docs_ngcom/source/permissions.html) for details.
WFS allows to edit data in desktop apps.
WFS services can also be accessed with links of the following type ([basic auth](https://docs.nextgis.com/docs_ngweb_dev/doc/developer/auth.html) is supported):
```http
https://mywebgis.nextgis.com/api/resource/2413/wfs?SERVICE=WFS&TYPENAME=ngw_id_2412&username=administrator&password=mypassword&srsname=EPSG:3857&VERSION=1.0.0&REQUEST=GetFeature
```
## WMS service
NextGIS Web can be used as WMS server.
This protocol is provides images with a requested extent.
To deploy a WMS service you need to add a resource. Press **Create resource** button and select **WMS service** (see [Fig. 351.](#admin-layers-create-wms-service)).

Enter the name of the resource that will be displayed in the administrator interface.

Also you can add [Description and metadata](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html#ngw-update-info-metada).
Switch to “WMS service” tab and add links to required layers or layer styles. You can also set the min and max scale for the data visualization.

After the resource is created, on its page you’ll find three URLs:
WMS service
[WMTS](../../glossary.md#term-WMTS) service (KVP)
[WMTS](../../glossary.md#term-WMTS) service (REST)
You can use these URS to access the data in other software, e.g. **NextGIS QGIS** or **JOSM**.
Then you need to [set access permissions for the WMS service](https://docs.nextgis.com/docs_ngcom/source/permissions.html#ngcom-permissions-auth-wms).
NextGIS Web layer can be added to desktop, mobile and Web GIS in different ways.
### Using WMS service
NextGIS Web acts as a WMS server: WMS services created in NextGIS Web can be added to any software that supports WMS protocol. For that you need to know the WMS service URL. You can get it on the WMS service page.
The link may look like this:
```html
https://demo.nextgis.com/api/resource/4817/wms?
```
To use WMS service through GDAL utilities you need to create an XML file for the required layer.
All it requires it the URL of the WMS service.
Enter these parameters to the ServerUrl string in example below. The rest remains unchanged.
```xml
1.1.1https://demo.nextgis.com/api/resource/4817/wms?EPSG:3857image/pngmoscow_boundary_multipolygon-20037508.3420037508.3420037508.34-20037508.344007501640075016.857EPSG:38573
```
If you need an image with transparency (alpha channel) set `4`.
Here is an example of a GDAL command. The utility gets an image by WMS from NextGIS Web and saves it to a GeoTIFF format.
```bash
$ gdal_translate -of "GTIFF" -outsize 1000 0 -projwin 4143247 7497160 \
4190083 7468902 ngw.xml test.tiff
```
# setting_up.html.md
# Setting up
After the app is installed to your device, you need to set it up to begin track recording.
## Track recording settings
When you open the app for the first time, give the following permissions:
* allow NextGIS Tracker to access location.
If you see the dialog shown on [Fig. 1121.](#ngtr-allow-location-pic), select **Precise** and **While using app**.

* in the newer Android version you also need to allow notifications from NextGIS Tracker.
## Setting up sending tracks to Web GIS
To upload tracks to your Web GIS (cloud-based or on-premise), set up synchronization.
In the top bar turn on **Sync with the cloud** switch (see [Fig. 1122.](#sync-with-cloud-pic)), then enter your Web GIS credentials and save, as shown on [Fig. 1123.](#webgis-creds-pic).

When the settings are saved, you’ll get a notification saying “Tracker is created”. Under the “Sync” slider you’ll see a message: “Automatically send tracking information to *Web GIS URL*”, as shown on [Fig. 1124.](#synced-success-pic).

# settings.html.md
# Settings
## Profile
**Profile** section contains user information. It is devided into two tabs: *My profile* and *My API keys*.
**My profile** tab has the following settings:
* Login
* Password (can be modified after you log in for the first time)
* Username
* E-mail

**My API keys** are used for integration with other NextGIS services and external applications.
For instance, you’ll need an API key to work
In this section Administrator can create and delete API keys.
While creating an API key, Administrator can set an expiration date for it.
Other API key settings include extent boundary, scale limits and origins.

## Users and user groups
Available settings depend on user access rights.
Administrator has full access and can create users, user groups, add users to the groups, delete and modify users and groups.

To create a new user press **Add** and fill the following fields:
* Login
* Password
* Username
* E-mail
* Group to which the new user will be added (optional)

To create a User group, in the list of groups press **Add**. Enter the name for the group. You can select users to be included in the group from a dropdown menu.

## Basemap
In this section you can upload data that will be used for basemap services.
You can upload a PBF file (you can [order on NextGIS Data](https://data.nextgis.com/en/region/custom/base/)). Upload progress is displayed on the same tab.

When the files are uploaded, press **Submit new basemap data** on the top of the page.

When the process is finished, it will be marked by a green dot in the Log .

Default basemap that you configured can be found in the Public service group. Use the link for the tile service XYZ to add it to external software such as NextGIS Web or QGIS.
You can use the basemap data to [create more services](https://docs.nextgis.com/docs_geoserv_prem/source/services.html#basemap-service).

## Log
The log registers data processing history and other actions performed by the app.
Log entries include status, process source, beginning and end times, task ID and messages.

## Storage
In this section you can see the size of the cache stored in S3.
To start estimation process, click **Estimate storage**. Beside this button you’ll see the date and time of the last estimation.

Storage usage is estimated for all the cache combined as well as for individual services. To view the storage used by a particular service, open its preview.

## About
This section has information on the current versions of the components.

# settings.html.md
# Settings dialogue
Depending on the screen size Settings dialogue can fit into one or two panels. Settings dialogue is shown on [Fig. 949.](#ngmobile-settings-pic) (one panel mode).

There are following Settings on the main panel:
* [General](https://docs.nextgis.com/docs_ngmobile/source/settings.html#general)
* [Map](https://docs.nextgis.com/docs_ngmobile/source/settings.html#map)
* [Location](https://docs.nextgis.com/docs_ngmobile/source/settings.html#location)
* [My tracks](https://docs.nextgis.com/docs_ngmobile/source/settings.html#my-tracks)
* Web GIS
* Account
## General
“General” settings allow to change basic settings of the map (see [Fig. 950.](#ngmobile-settings-general-pic)).

Here you can select the theme (Light or Dark) and tune up compass settings.
## Map
“Map” settings allow to change basic settings of the map (see [Fig. 951.](#ngmobile-settings-map-pic)).

Map settings include:
* Show/hide Status info panel
* The way current location is displayed (show current location, show marker, how marker & accuracy radius)
* Show mini compass
* Keep map screen on - works only on the map screen
* Show/hide zoom control buttons on the map
* Measurement system
* Show scale ruler
* Show zoom level
* Show measuring button
* Coordinates format (for coordinates in Status bar and other dialogs and screens)
* Decimal places
* Map background (light, dark, neutral)
* Map path (here you can specify a path where map and layers data will be stored)
* [Restore broken layers](https://docs.nextgis.com/docs_ngmobile/source/settings.html#restore-layers)
#### NOTE
For devices with several SD cards and Android 4.4 and higher, map path not on the main SD card can only be specified in the application home directory and its subdirectories (for example: Android/data/com.nextgis.mobile). This is also true for some devices without root access. Read-only folders won’t show up in path selection dialog.
## Restore layers
Sometimes in case of memory malfunction, problems with writing data etc the synchronization between the layer on the map and in the app’s memory may break.
To restore a broken layer open Settings –> Map and click **Restore broken layers**.
Select a layer you want to restore.

In this menu you’ll see the names of the local files in your device memory. The standard vector layers created during the installation of the app are:
* Points - vector_a
* Lines - vector_b
* Polygons - vector_c
To see the name of the file corresponding to another layer, open its context menu (three dots), go to Settings. On the [General](https://docs.nextgis.com/docs_ngmobile/source/layer_settings.html#ngmobile-tab-general-settings) tab you’ll find the full path to the file.
## Location
“Location” settings offer a few location specific settings (see [Fig. 953.](#ngmobile-settings-place-pic)).

Location settings include:
* Coordinate source (mobile networks/Wi-Fi + [GPS](../../glossary.md#term-GPS), Other networks or only GPS)
* Minimum update time
* Minimum update distance
* Count of GPS fixes
## My tracks
“Tracks” settings are similar to the location settings, but they are applied only for track recording.
Check “Send location to server” if you want to view tracks on a Web Map or save them to a vector layer. In this settings page you can also check your UID (you’ll need it to create a tracker in Web GIS). [More about tracking](https://docs.nextgis.com/docs_ngcom/source/tracking.html).

#### NOTE
If you set value of the minimum update distance at more than 5 m, the operating system will start to smooth the track (remove outliers).
# share.html.md
# Exporting data
## Exporting data in GeoJSON
To export data from NextGIS Mobile vector layer open Layers tree panel (item 1 in [Fig. 943.](main.md#ngmobile-main-activity-pic-1)). Then tap on the contextual menu icon next to the layer name (item 5 in [Fig. 944.](main.md#ngmobile-layer-tree-pic)). This will open the contextual menu items as shown in item 6 in [Fig. 944.](main.md#ngmobile-layer-tree-pic) There you need to select “Share”.
Android standard Share dialogue window with a list of available Share options will open as shown in [Fig. 1023.](#ngmobile-share-pic).

After you select a share option, data in the selected layer will be recorded in [GeoJSON](../../glossary.md#term-GeoJSON) format ([coordinate system](../../glossary.md#term-coordinate-system) Web Mercator, EPSG:3857) and exported via the selected application. The name of GeoJSON file will be the same as the name of the exported layer.
Some of the share options (availability is dependent on the apps installed on your device):
* You can send the file as an attachment via Gmail or different Email app.
* You can upload the file to Google Drive/Dropbox/other cloud service and then share it with your colleagues.
* You can send the file to another device via Bluetooth or SHAREit.
* You can save the file on a memory card.
#### WARNING
In many Android versions to save a file on the device memory card you need a file manager app (for example, ES Explorer or similar).
See how to change the default sharing method:
Watch on [youtube](https://youtu.be/ducW-h1T-8M?si=9oYserBatgQ72jum).
## Exporting attachments
Each feature in vector layer can have one or more photos attached to it. Photos are stored separately as image files and added to archive file with layer data during the export. For each feature a separate attachments folder is generated in the archive, the name of the folder corresponds to feature ID.
Example:
(4:10000002.jpg,10000000.jpg,10000001.jpg,10000003.jpg)
Explanation:
4 photos are attached to a feature. These 4 photos are stored in the folder which name is similar to the feature ID.
## Exporting tracks in GPX
To start exporting tracks first find “My Tracks” group in Layers tree panel. Then tap on contextual menu button as shown in [Fig. 1024.](#ngmobile-tree-layers-gpx-pic) and select “List”.

This will open a list of recorded tracks as shown in [Fig. 1020.](tracks.md#ngmobile-tracks-list-gpx-pic). If there are few tracks recorded in a day, tracks will be divided into sessions. If a track was recorded during few days, this track will be divided into parts corresonding to recording days.
Select a track you want to export by ticking the corresponding checkbox, and buttons in Top toolbar will become active as shown in [Fig. 1021.](tracks.md#ngmobile-layer-gpx-selected-pic)
To export the track, tap on Share button (see item 4 in [Fig. 1021.](tracks.md#ngmobile-layer-gpx-selected-pic)). It will open the same Share dialogue window as shown in [Fig. 1023.](#ngmobile-share-pic) above.
After you select a share option, data in the selected track will be recorded in GPX format and exported via the selected application.
# shortcut.html.md
# Shortcut Manager
Create a shortcuts toolbar to run external programs and open web pages directly from QGIS .
After installation Shortcut Manager will appear in the Plugins menu.

* Activate the plugin and press **Create shortcut**.

* Select an app from your desktop, enter a path to a file on your device or a URL.

* Enter a name for the shorcut button.

* Select the icon.

* Press **Finish**.
The shortcut button will appear on the Plugins toolbar.
You can edit and delete the shortcuts.

See how the plugin works in our video:
Watch on [youtube](https://youtu.be/cVYAEHkRkG0?si=Pi8ikqmOAQ69lJBK).
# sidebar.html.md
# Navigation
* [Get Started with NextGIS](docs_ngcom/source/index.md)
* [Intro](docs_ngcom/source/intro.md)
* [Web GIS: Description and Main Features](docs_ngcom/source/description.md)
* [Account](docs_ngcom/source/create.md)
* [How to create account (NextGIS ID)](docs_ngcom/source/create.md#how-to-create-account-nextgis-id)
* [Sign-in via NextGIS ID](docs_ngcom/source/create.md#sign-in-via-nextgis-id)
* [Change or recover NextGIS ID password](docs_ngcom/source/create.md#change-or-recover-nextgis-id-password)
* [My account](docs_ngcom/source/create.md#my-account)
* [Where can I use NextGIS ID](docs_ngcom/source/create.md#ngcom-ngid-use)
* [Team](docs_ngcom/source/teams.md)
* [Team information](docs_ngcom/source/teams.md#team-information)
* [Manage your team](docs_ngcom/source/teams.md#manage-your-team)
* [Allow team members to access Web GIS](docs_ngcom/source/teams.md#allow-team-members-to-access-web-gis)
* [Team memberships](docs_ngcom/source/teams.md#team-memberships)
* [How to create Web GIS](docs_ngcom/source/create_webgis.md)
* [How to sign in to your Web GIS](docs_ngcom/source/create_webgis.md#how-to-sign-in-to-your-web-gis)
* [Main menu](docs_ngcom/source/create_webgis.md#main-menu)
* [Subscription](docs_ngcom/source/subscription.md)
* [Upgrade subscription plan](docs_ngcom/source/subscription.md#upgrade-subscription-plan)
* [Cancel subscription](docs_ngcom/source/subscription.md#cancel-subscription)
* [Which data formats and protocols are supported in Web GIS](docs_ngcom/source/data_types.md)
* [How data is managed](docs_ngcom/source/resources.md)
* [Demo projects](docs_ngcom/source/demoprojects.md)
* [What you can do with demo projects](docs_ngcom/source/demoprojects.md#what-you-can-do-with-demo-projects)
* [Tutorial: Store, manage and publish your spatial data](docs_ngcom/source/tutorial_webgis.md)
* [Step 1/6 Create free account and Web GIS](docs_ngcom/source/tutorial_webgis.md#step-1-6-create-free-account-and-web-gis)
* [Step 2/6 Access your Web GIS and create resource group](docs_ngcom/source/tutorial_webgis.md#step-2-6-access-your-web-gis-and-create-resource-group)
* [Step 3/6 Upload and publish vector layer](docs_ngcom/source/tutorial_webgis.md#step-3-6-upload-and-publish-vector-layer)
* [Step 4/6 Upload a style](docs_ngcom/source/tutorial_webgis.md#step-4-6-upload-a-style)
* [Step 5/6 Upload and publish raster layer](docs_ngcom/source/tutorial_webgis.md#step-5-6-upload-and-publish-raster-layer)
* [Step 6/6 Publish Web Map](docs_ngcom/source/tutorial_webgis.md#step-6-6-publish-web-map)
* [Add external WMS layer to Web Map](docs_ngcom/source/tutorial_webgis.md#wms)
* [Add basemaps to Web Map](docs_ngcom/source/tutorial_webgis.md#add-basemaps-to-web-map)
* [Create vector layer inside Web GIS](docs_ngcom/source/tutorial_webgis.md#empty-layer)
* [Edit vector layer on a Web Map, add file attachments](docs_ngcom/source/tutorial_webgis.md#edit-vector-layer-on-a-web-map-add-file-attachments)
* [Publish OGC API — Features service](docs_ngcom/source/tutorial_webgis.md#ogc-api)
* [What next](docs_ngcom/source/tutorial_webgis.md#next)
* [Tutorial: Seamless QGIS Integration](docs_ngcom/source/tutorial_qgis.md)
* [Step 1/5 Create free account and Web GIS](docs_ngcom/source/tutorial_qgis.md#step-1-5-create-free-account-and-web-gis)
* [Step 2/5 Open and explore QGIS project](docs_ngcom/source/tutorial_qgis.md#step-2-5-open-and-explore-qgis-project)
* [Step 3/5 Install NextGIS Connect plugin](docs_ngcom/source/tutorial_qgis.md#step-3-5-install-nextgis-connect-plugin)
* [Step 4/5 Create a connection](docs_ngcom/source/tutorial_qgis.md#step-4-5-create-a-connection)
* [Step 5/5 Publish QGIS project to NextGIS Web](docs_ngcom/source/tutorial_qgis.md#step-5-5-publish-qgis-project-to-nextgis-web)
* [Connect to Web Map from QGIS](docs_ngcom/source/tutorial_qgis.md#id2)
* [Modify layer styles on the Web Map from QGIS](docs_ngcom/source/tutorial_qgis.md#modify-layer-styles-on-the-web-map-from-qgis)
* [Update raster layer style on a Web Map](docs_ngcom/source/tutorial_qgis.md#raster-style)
* [Edit data from QGIS and explore results on the Web Map](docs_ngcom/source/tutorial_qgis.md#edit-data-from-qgis-and-explore-results-on-the-web-map)
* [How to upload data](docs_ngcom/source/data_upload.md)
* [Quick preview](docs_ngcom/source/data_upload.md#quick-preview)
* [Raster data](docs_ngcom/source/data_upload.md#raster-data)
* [Vector data](docs_ngcom/source/data_upload.md#vector-data)
* [How to connect data from external sources](docs_ngcom/source/data_connect.md)
* [Basemaps](docs_ngcom/source/data_connect.md#basemaps)
* [External PostGIS databases](docs_ngcom/source/data_connect.md#external-postgis-databases)
* [External WMS services](docs_ngcom/source/data_connect.md#external-wms-services)
* [External TMS services](docs_ngcom/source/data_connect.md#external-tms-services)
* [How to create map styles for data visualization](docs_ngcom/source/styles.md)
* [QGIS style](docs_ngcom/source/styles.md#qgis-style)
* [MapServer style](docs_ngcom/source/styles.md#mapserver-style)
* [Raster style](docs_ngcom/source/styles.md#raster-style)
* [How to create a Web Map](docs_ngcom/source/webmap_create.md)
* [Create Web Map](docs_ngcom/source/webmap_create.md#create-web-map)
* [Open Web Map](docs_ngcom/source/webmap_create.md#open-web-map)
* [Add a description](docs_ngcom/source/webmap_create.md#add-a-description)
* [How to embed a Web Map on your website](docs_ngcom/source/embed_webmap.md)
* [Embeded map settings](docs_ngcom/source/embed_webmap.md#embeded-map-settings)
* [How to share a link to a particular Web Map feature](docs_ngcom/source/embed_webmap.md#how-to-share-a-link-to-a-particular-web-map-feature)
* [How to publish data using standard protocols](docs_ngcom/source/data_services.md)
* [WMS service](docs_ngcom/source/data_services.md#wms-service)
* [WFS service](docs_ngcom/source/data_services.md#wfs-service)
* [How to connect a Lookup table to a vector layer](docs_ngcom/source/lookup.md)
* [How to use a lookup table for layer editing in NextGIS Web](docs_ngcom/source/lookup.md#how-to-use-a-lookup-table-for-layer-editing-in-nextgis-web)
* [How to use a lookup table in QGIS](docs_ngcom/source/lookup.md#how-to-use-a-lookup-table-in-qgis)
* [How to manage data with desktop app QGIS](docs_ngcom/source/ngqgis_connect.md)
* [How to enable the monitoring of moving objects (tracking)](docs_ngcom/source/tracking.md)
* [Introduction](docs_ngcom/source/tracking.md#introduction)
* [How tracking works](docs_ngcom/source/tracking.md#how-tracking-works)
* [Creating tracker groups](docs_ngcom/source/tracking.md#creating-tracker-groups)
* [Tracking in NextGIS Mobile, Collector and Tracker](docs_ngcom/source/tracking.md#tracking-in-nextgis-mobile-collector-and-tracker)
* [Tracking results on the Web Map](docs_ngcom/source/tracking.md#tracking-results-on-the-web-map)
* [Managing access rights](docs_ngcom/source/permissions.md)
* [Terms](docs_ngcom/source/permissions.md#terms)
* [Viewing user permissions](docs_ngcom/source/permissions.md#viewing-user-permissions)
* [Permissions tab in Settings](docs_ngcom/source/permissions.md#permissions-tab-in-settings)
* [Common cases of assigning permissions](docs_ngcom/source/permissions.md#common-cases-of-assigning-permissions)
* [How to begin data collection in your Web GIS](docs_ngcom/source/collector.md)
* [Introduction](docs_ngcom/source/collector.md#introduction)
* [Principles of work with NextGIS Collector](docs_ngcom/source/collector.md#principles-of-work-with-nextgis-collector)
* [Organizer of data collection: adding team participants in Web GIS](docs_ngcom/source/collector.md#organizer-of-data-collection-adding-team-participants-in-web-gis)
* [Organizer of data collection: creating data collection project](docs_ngcom/source/collector.md#organizer-of-data-collection-creating-data-collection-project)
* [Team participants: mobile app installation and start of data collection](docs_ngcom/source/collector.md#team-participants-mobile-app-installation-and-start-of-data-collection)
* [Administrator’s check-list](docs_ngcom/source/collector.md#administrator-s-check-list)
* [How to use Web GIS for creation of end-user apps](docs_ngcom/source/ngapi.md)
* [How to improve translation](docs_ngcom/source/translation.md)
* [Join the project](docs_ngcom/source/translation.md#join-the-project)
* [How to translate](docs_ngcom/source/translation.md#how-to-translate)
* [Toubleshooting](docs_ngcom/source/help.md)
* [Styles compatibility between QGIS and NextGIS Web](docs_ngcom/source/help.md#styles-compatibility-between-qgis-and-nextgis-web)
* [How to get help or send a bug report](docs_ngcom/source/help.md#how-to-get-help-or-send-a-bug-report)
* [Problem Solving (Q&A)](docs_ngcom/source/faq_webgis.md)
* [How to sign in to Web GIS](docs_ngcom/source/faq_webgis.md#how-to-sign-in-to-web-gis)
* [Access recovery and passwords](docs_ngcom/source/faq_webgis.md#access-recovery-and-passwords)
* [Personal data](docs_ngcom/source/faq_webgis.md#personal-data)
* [Two NextGIS accounts. Background](docs_ngcom/source/faq_webgis.md#two-nextgis-accounts-background)
* [How to…](docs_ngcom/source/howtos.md)
* [Tutorials](docs_howto/source/index.md)
* [NextGIS Toolbox](docs_toolbox/source/index.md)
* [Introduction](docs_toolbox/source/intro.md)
* [Purpose](docs_toolbox/source/intro.md#purpose)
* [Installation and running](docs_toolbox/source/intro.md#installation-and-running)
* [Authorization](docs_toolbox/source/intro.md#authorization)
* [Use via MCP](docs_toolbox/source/mcp.md)
* [ChatGPT (web)](docs_toolbox/source/mcp.md#chatgpt-web)
* [Claude (web)](docs_toolbox/source/mcp.md#claude-web)
* [Claude Code](docs_toolbox/source/mcp.md#claude-code)
* [Cursor IDE](docs_toolbox/source/mcp.md#cursor-ide)
* [Tools](docs_toolbox/source/tools.md)
* [Add region and settlement names to attributes](docs_toolbox/source/add_regions.md)
* [Adobe Illustrator (\*.ai) to geodata](docs_toolbox/source/ai2geo.md)
* [Aggregate raster layer to H3 grid](docs_toolbox/source/aggregate_raster_layer_to_h3.md)
* [Aggregate vector layer to H3 grid](docs_toolbox/source/aggregate_vector_layer_to_h3.md)
* [Layer list from DWG file](docs_toolbox/source/autocad_file_schema.md)
* [Report DWG / DXF file version](docs_toolbox/source/autocad_version.md)
* [ASCII raster to GeoTIFF](docs_toolbox/source/ascii2geotiff.md)
* [Buffer](docs_toolbox/source/buffer.md)
* [Central lines of polygons](docs_toolbox/source/centerline.md)
* [Points inside polygons](docs_toolbox/source/centroid2attr.md)
* [Check geometries](docs_toolbox/source/check_geometries.md)
* [Calculate areas of intersection](docs_toolbox/source/clip_polys_poly.md)
* [Convert format of vector layer](docs_toolbox/source/convert.md)
* [Reproject coordinates](docs_toolbox/source/coord_recalc.md)
* [Coordinates to polygon](docs_toolbox/source/coords2poly.md)
* [Count TMS tiles for polygon](docs_toolbox/source/count_tiles.md)
* [Count number of layer intersections](docs_toolbox/source/crossing_borders.md)
* [Extract elevations from DEM](docs_toolbox/source/deminpoints.md)
* [DOC(X) to PDF](docs_toolbox/source/doc2pdf.md)
* [Prepare and download Sentinel-2 data](docs_toolbox/source/download_and_prepare_l8_s2.md)
* [Download Landsat Analysis Ready Data (GLAD ARD)](docs_toolbox/source/download_glad.md)
* [Embed SVG into QGS/QML](docs_toolbox/source/embedsvg.md)
* [Empty geometries in Web GIS layer](docs_toolbox/source/empty_geoms.md)
* [Erase overlapping areas from layer](docs_toolbox/source/eraser.md)
* [Erosion Susceptibility Analysis](docs_toolbox/source/erosion_analysis.md)
* [Photos with EXIF to NGW layer](docs_toolbox/source/exif2resource.md)
* [Change attributes in layer group](docs_toolbox/source/field_value_changer.md)
* [Fix geometries](docs_toolbox/source/fix_geometries.md)
* [Strip ZM from vector layer](docs_toolbox/source/flatten.md)
* [Flood Susceptibility Analysis](docs_toolbox/source/flood_analysis.md)
* [GBIF species observations to geodata](docs_toolbox/source/gbif_download.md)
* [Advanced vector generalization](docs_toolbox/source/generalization.md)
* [Geocode table](docs_toolbox/source/geocodetable.md)
* [Geodata to PMTiles](docs_toolbox/source/geodata2pmtiles.md)
* [Change geometries in layer groups](docs_toolbox/source/geometry_changer.md)
* [GeoPackage to MapInfo Enhanced TAB](docs_toolbox/source/gpkg2etab.md)
* [GPS track animation for social media](docs_toolbox/source/gpxanimation.md)
* [Geotag photos using GPX track](docs_toolbox/source/gpx2exif.md)
* [Clip GPX file by bounding box](docs_toolbox/source/gpxclipbbox.md)
* [Split GPX file by days](docs_toolbox/source/gpxdailysplit.md)
* [Merge GPX files](docs_toolbox/source/gpxmerge.md)
* [Split GPX into individual tracks](docs_toolbox/source/gpxtracksplit.md)
* [Meter grid](docs_toolbox/source/grid.md)
* [Hello, World!](docs_toolbox/source/hello.md)
* [iNaturalist species observations to geodata](docs_toolbox/source/inaturalist_download.md)
* [Image classification](docs_toolbox/source/image_classification.md)
* [Image clustering](docs_toolbox/source/image_clustering.md)
* [Copernicus Sentinel image search](docs_toolbox/source/imagesearch.md)
* [DWG to DXF](docs_toolbox/source/import_dwg.md)
* [DWG to DXF (libdxfrw)](docs_toolbox/source/import_dwg_libdxfrw.md)
* [Improve DEM](docs_toolbox/source/improvedem.md)
* [Intersection registry](docs_toolbox/source/intersect_layers.md)
* [Join layer and table by field](docs_toolbox/source/join_by_field.md)
* [KML to geodata](docs_toolbox/source/kml2geodata.md)
* [Projection (Dae, Collada) to Shapefile](docs_toolbox/source/kmldae2footprints.md)
* [Search and save Landsat-L2C2 scene previews](docs_toolbox/source/landsat_search.md)
* [Landsat radiometric calibration](docs_toolbox/source/landsat_to_radiance.md)
* [Landsat reflectance calculation](docs_toolbox/source/landsat_to_reflectance.md)
* [Landslide Susceptibility Analysis](docs_toolbox/source/landslide_analysis.md)
* [Vector layers in Web GIS from archive](docs_toolbox/source/layers2ngw.md)
* [Form multi-channel raster from individual channels](docs_toolbox/source/layerstack.md)
* [Lines to polygons](docs_toolbox/source/lines2poly.md)
* [Temporal polygons from lines and points](docs_toolbox/source/lines2polygons.md)
* [MapInfo ready for QGIS](docs_toolbox/source/mapinfo2qgis.md)
* [Vertical map for Social Media](docs_toolbox/source/mappy.md)
* [Max distance between polygon nodes](docs_toolbox/source/maxdist.md)
* [MBTiles to NGRC](docs_toolbox/source/mbtiles2ngrc.md)
* [Marine traffic report](docs_toolbox/source/mt2report.md)
* [Normalized difference index](docs_toolbox/source/ndi.md)
* [Attribute to description for Web GIS](docs_toolbox/source/ngw_attribute2description.md)
* [Contribution activity report for resource](docs_toolbox/source/ngw_contribution_activity.md)
* [Copy nextgis.com resource group with data](docs_toolbox/source/ngw_copy_group.md)
* [Duplicate Web GIS layer](docs_toolbox/source/ngw_copy_layer.md)
* [Feature history](docs_toolbox/source/ngw_feature_history.md)
* [Resource group to Web Map](docs_toolbox/source/ngw_group2webmap.md)
* [Intersection registry for Web GIS](docs_toolbox/source/ngw_intersect.md)
* [Get the layer historical state](docs_toolbox/source/ngw_layer_historical_state.md)
* [Manage Web GIS layer structure](docs_toolbox/source/ngw_layer_schema.md)
* [Merge two Web GIS vector layers](docs_toolbox/source/ngw_merge_layers.md)
* [Vector layers from Web GIS to GeoPackage](docs_toolbox/source/ngw_to_gpkg.md)
* [Web Map to image](docs_toolbox/source/ngw_webmap2image.md)
* [Combine two Web Maps into a new one](docs_toolbox/source/ngw_webmap_combiner.md)
* [Geocode with Nominatim](docs_toolbox/source/nominatim_geocode.md)
* [Merge vector layers](docs_toolbox/source/ogrmerge.md)
* [Download OpenStreetMap](docs_toolbox/source/osm_download.md)
* [Clip PBF file by bbox](docs_toolbox/source/osmclip_bbox.md)
* [Convert Garden Gnome Package panoramas to JPEG](docs_toolbox/source/pano2vr.md)
* [Add Google Photosphere XMP metadata to photos](docs_toolbox/source/panotag.md)
* [Import PastVu photos to Web GIS](docs_toolbox/source/pastvu2webgis.md)
* [Search & download Planetary Computer](docs_toolbox/source/planetary_search.md)
* [Point cloud to tileset](docs_toolbox/source/pointcloud2tileset.md)
* [Statistics of points and tracks in polygons from NGW](docs_toolbox/source/points_on_tracks_stats.md)
* [Polygons topological simplifier](docs_toolbox/source/polysimplifier.md)
* [Parse addresses](docs_toolbox/source/postal.md)
* [Predict satellite overpass](docs_toolbox/source/predict_overpass.md)
* [Prepare raster](docs_toolbox/source/prepare_raster.md)
* [Check geometries (QGIS)](docs_toolbox/source/qgis_check_geometries.md)
* [Fix geometries (QGIS)](docs_toolbox/source/qgis_fix_geometries.md)
* [Multipart to singleparts](docs_toolbox/source/qgis_multiparttosingleparts.md)
* [QGIS project to PDF](docs_toolbox/source/qgis2pdf.md)
* [Set of squares with transects](docs_toolbox/source/quadro.md)
* [Raster calculator (GRASS)](docs_toolbox/source/r_mapcalc.md)
* [Raster calculator (GDAL)](docs_toolbox/source/raster_calculator.md)
* [Raster to NGRC](docs_toolbox/source/raster2tiles.md)
* [Erase features](docs_toolbox/source/removecontents.md)
* [Sentinel-2 scenes to GPKG](docs_toolbox/source/s2_search.md)
* [Sunlight hours prediction](docs_toolbox/source/solar_hours.md)
* [Spatial Join (Join by location)](docs_toolbox/source/spatial_join.md)
* [Compute spectral index](docs_toolbox/source/spectral_indices.md)
* [Split into equal parts](docs_toolbox/source/split_to_equal.md)
* [Split into rectangles and calculate their number](docs_toolbox/source/split_to_rect.md)
* [Split at 180th meridian](docs_toolbox/source/split180.md)
* [Split Complex Polygons](docs_toolbox/source/splitcomplex.md)
* [Google Sheets to Web GIS](docs_toolbox/source/spreadsheet2layer.md)
* [Table to vector file](docs_toolbox/source/table2geo.md)
* [Create temporal cache](docs_toolbox/source/temporal_split.md)
* [Comprehensive Terrain Analysis](docs_toolbox/source/terrain_analysis.md)
* [TROPOMI to GeoTIFF](docs_toolbox/source/tropomi2geotiff.md)
* [Update Web GIS layer from CSV](docs_toolbox/source/update_vector_layer.md)
* [Prepare vector layer for DataLens](docs_toolbox/source/vector2datalens.md)
* [Layer intersection](docs_toolbox/source/vectorclip.md)
* [Web GIS structure to spreadsheet](docs_toolbox/source/web_gis_structure.md)
* [Web Map to QGIS project](docs_toolbox/source/webmap2qgis.md)
* [Wildfire Susceptibility Analysis (Topographic)](docs_toolbox/source/wildfire_analysis.md)
* [NextGIS Data](docs_data/source/index.md)
* [General issues](docs_data/source/common.md)
* [How to order data](docs_data/source/order.md)
* [How to switch accounts](docs_data/source/logout.md)
* [How to open the entire map (project)](docs_data/source/open_map.md)
* [How to order printable map](docs_data/source/order_printmap.md)
* [How to open a particular layer](docs_data/source/open_layer.md)
* [How to find the object I need on OpenStreetMap](docs_data/source/osm_search.md)
* [How to get coordinates of a target object](docs_data/source/coord.md)
* [How to get municipal boundaries for a target region](docs_data/source/district.md)
* [How to select all of my city’s hospitals on the map](docs_data/source/hospital.md)
* [How to prepare map for printing](docs_data/source/print.md)
* [How to change the language of labels in OSM data](docs_data/source/label_lang.md)
* [NextGIS Data extracts](docs_data/source/extracts.md)
* [Our data in other software](docs_data/source/other_soft.md)
* [How to upload data to NextGIS Web with NextGIS Connect](docs_data/source/connect2ngw.md)
* [How to upload Tileset to NextGIS Web](docs_data/source/tiles2ngw_en.md)
* [How to open elevation data in QGIS](docs_data/source/elevation_qgis.md)
* [How to load elevation data into QGIS 3D window](docs_data/source/3d_dem_qgis.md)
* [How to open satellite data in QGIS](docs_data/source/satellite.md)
* [How to upload data to Google maps](docs_data/source/google_mymaps.md)
* [How to import data into AutoCAD](docs_data/source/autocad.md)
* [How to add a layer in AutoCAD Map 3D](docs_data/source/map3d.md)
* [How to load data in R](docs_data/source/r.md)
* [How to load data in GeoPandas](docs_data/source/geopandas.md)
* [How to open data in Excel](docs_data/source/excel.md)
* [How to upload text data into Microsoft Power BI](docs_data/source/power_bi.md)
* [How to load vector layer into Microsoft Power BI](docs_data/source/power_bi_map.md)
* [How to vizualize data with Highcharts Maps (highcharts.js)](docs_data/source/highcharts.md)
* [How to use data in Leaflet (leaflet.js)](docs_data/source/leaflet.md)
* [How to use data in D3 (d3.js)](docs_data/source/d3.md)
* [How to load data into PostgreSQL/PostGIS](docs_data/source/pg.md)
* [How to load multiple tables of different regions in PostgreSQL/PostGIS](docs_data/source/upload_tables_postgis.md)
* [How to load layer into Tableau](docs_data/source/tableau.md)
* [How to upload data to Blender GIS](docs_data/source/blender.md)
* [How to load data into Qlik Sense](docs_data/source/qlik.md)
* [How to open your project in MapInfo](docs_data/source/mapinfo.md)
* [How to open raster data in MapInfo](docs_data/source/mapinfo_raster.md)
* [How to open your basemap project in ArcGIS Pro](docs_data/source/arcgispro.md)
* [How to open a map or a project in ArcGIS Pro](docs_data/source/arcgis.md)
* [How to upload data to Locus GIS mobile app](docs_data/source/locus.md)
* [Data conversion](docs_data/source/transform.md)
* [How to process your data](docs_data/source/process.md)
* [How to change coordinate reference system of the data](docs_data/source/cs_change.md)
* [How to convert file to another GIS format](docs_data/source/type_change.md)
* [How to change data encoding](docs_data/source/encoding_change.md)
* [Solving technical problems](docs_data/source/problems.md)
* [When area or distance differs from the expected value](docs_data/source/calc_area.md)
* [NextGIS Web](docs_ngweb/source/index.md)
* [Introduction](docs_ngweb/source/intro.md)
* [General Information](docs_ngweb/source/general.md)
* [Key features of NextGIS Web](docs_ngweb/source/general.md#key-features-of-nextgis-web)
* [Minimum hardware](docs_ngweb/source/general.md#minimum-hardware)
* [Recommended software versions](docs_ngweb/source/general.md#recommended-software-versions)
* [Main interface](docs_ngweb/source/admin_interface.md)
* [Authorization](docs_ngweb/source/admin_interface.md#authorization)
* [Home page](docs_ngweb/source/admin_interface.md#home-page)
* [Language change](docs_ngweb/source/admin_interface.md#language-change)
* [Resource search](docs_ngweb/source/admin_interface.md#resource-search)
* [Control panel](docs_ngweb/source/admin_interface.md#control-panel)
* [Resource view](docs_ngweb/source/admin_interface.md#resource-view)
* [Feature table](docs_ngweb/source/admin_interface.md#feature-table)
* [Data export](docs_ngweb/source/admin_interface.md#data-export)
* [Interface for guests](docs_ngweb/source/admin_interface.md#interface-for-guests)
* [Adding resources](docs_ngweb/source/create_resource.md)
* [Create Resource group to manage data](docs_ngweb/source/create_resource.md#create-resource-group-to-manage-data)
* [Data preview](docs_ngweb/source/create_resource.md#data-preview)
* [Typical structure](docs_ngweb/source/create_resource.md#typical-structure)
* [Gallery](docs_ngweb/source/gallery.md)
* [Gallery items](docs_ngweb/source/gallery.md#gallery-items)
* [Gallery settings](docs_ngweb/source/gallery.md#gallery-settings)
* [Add layers](docs_ngweb/source/layers.md)
* [Vector layer](docs_ngweb/source/layers.md#ngw-create-vector-layer)
* [Raster layer](docs_ngweb/source/layers.md#ngw-create-raster-layer)
* [Tileset](docs_ngweb/source/layers.md#ngw-tile-set)
* [Raster layer storage](docs_ngweb/source/layers.md#raster-storage)
* [Services](docs_ngweb/source/services.md)
* [MVT vector tiles](docs_ngweb/source/services.md#mvt-vector-tiles)
* [TMS service](docs_ngweb/source/services.md#tms-service)
* [OGC API – Features service](docs_ngweb/source/services.md#ogc-api-features-service)
* [WFS service](docs_ngweb/source/services.md#wfs-service)
* [WMS service](docs_ngweb/source/services.md#wms-service)
* [Update resource](docs_ngweb/source/edit_resource.md)
* [Move resource](docs_ngweb/source/edit_resource.md#move-resource)
* [Delete resource](docs_ngweb/source/edit_resource.md#delete-resource)
* [Edit description and metadata](docs_ngweb/source/edit_resource.md#edit-description-and-metadata)
* [Keyname for API integrations](docs_ngweb/source/edit_resource.md#keyname-for-api-integrations)
* [Managing Feature table](docs_ngweb/source/feature_table.md)
* [Feature table on a separate page](docs_ngweb/source/feature_table.md#feature-table-on-a-separate-page)
* [Feature table on a Web Map](docs_ngweb/source/feature_table.md#feature-table-on-a-web-map)
* [Search and filter](docs_ngweb/source/feature_table.md#search-and-filter)
* [Filter layer features on the Web Map by area](docs_ngweb/source/feature_table.md#filter-layer-features-on-the-web-map-by-area)
* [View feature entry](docs_ngweb/source/feature_table.md#view-feature-entry)
* [Create new feature](docs_ngweb/source/feature_table.md#create-new-feature)
* [Edit features](docs_ngweb/source/feature_table.md#edit-features)
* [Delete feature](docs_ngweb/source/feature_table.md#delete-feature)
* [Export to file](docs_ngweb/source/feature_table.md#export-to-file)
* [Displaying selected fields and feature edit information](docs_ngweb/source/feature_table.md#displaying-selected-fields-and-feature-edit-information)
* [Other tools](docs_ngweb/source/feature_table.md#other-tools)
* [Edit vector features](docs_ngweb/source/feature_edit.md)
* [Edit mode on a Web Map](docs_ngweb/source/feature_edit.md#edit-mode-on-a-web-map)
* [Create a new feature (point, line, polygon)](docs_ngweb/source/feature_edit.md#create-a-new-feature-point-line-polygon)
* [Delete feature](docs_ngweb/source/feature_edit.md#delete-feature)
* [Move feature](docs_ngweb/source/feature_edit.md#move-feature)
* [Edit vertices](docs_ngweb/source/feature_edit.md#edit-vertices)
* [Add and delete vertices](docs_ngweb/source/feature_edit.md#add-and-delete-vertices)
* [Create holes](docs_ngweb/source/feature_edit.md#create-holes)
* [Edit feature’s attributes](docs_ngweb/source/feature_edit.md#edit-feature-s-attributes)
* [Attachments](docs_ngweb/source/feature_edit.md#attachments)
* [Disable editing on the map](docs_ngweb/source/feature_edit.md#disable-editing-on-the-map)
* [Styles](docs_ngweb/source/mapstyles.md)
* [Formats](docs_ngweb/source/mapstyles.md#formats)
* [QGIS Vector Style](docs_ngweb/source/mapstyles.md#qgis-vector-style)
* [Editing QGIS style](docs_ngweb/source/mapstyles.md#editing-qgis-style)
* [MapServer style](docs_ngweb/source/mapstyles.md#mapserver-style)
* [Raster style](docs_ngweb/source/mapstyles.md#raster-style)
* [Tile cache](docs_ngweb/source/mapstyles.md#tile-cache)
* [Adding a style on the map](docs_ngweb/source/mapstyles.md#adding-a-style-on-the-map)
* [Creating other types of resources](docs_ngweb/source/create_other.md)
* [Lookup table](docs_ngweb/source/create_other.md#lookup-table)
* [File bucket](docs_ngweb/source/create_other.md#file-bucket)
* [Versioning](docs_ngweb/source/version.md)
* [Versioning in the NextGIS Web interface](docs_ngweb/source/version.md#versioning-in-the-nextgis-web-interface)
* [Versioning in NextGIS Web API](docs_ngweb/source/version.md#versioning-in-nextgis-web-api)
* [Versioning in QGIS](docs_ngweb/source/version.md#versioning-in-qgis)
* [Vector layer settings](docs_ngweb/source/layers_settings.md)
* [Edit vector layer attributes table](docs_ngweb/source/layers_settings.md#edit-vector-layer-attributes-table)
* [Delete or replace all features](docs_ngweb/source/layers_settings.md#delete-or-replace-all-features)
* [Change layer geometry](docs_ngweb/source/layers_settings.md#change-layer-geometry)
* [Advanced options for uploading vector layer from a file](docs_ngweb/source/vect_layer_upload_params.md)
* [Processing possible errors](docs_ngweb/source/vect_layer_upload_params.md#processing-possible-errors)
* [Detecting geometry type](docs_ngweb/source/vect_layer_upload_params.md#detecting-geometry-type)
* [Object ID detection settings (FID)](docs_ngweb/source/vect_layer_upload_params.md#object-id-detection-settings-fid)
* [PostGIS](docs_ngweb/source/postgis_details.md)
* [Creating PostGIS connection](docs_ngweb/source/postgis_details.md#creating-postgis-connection)
* [Creating PostGIS layer](docs_ngweb/source/postgis_details.md#creating-postgis-layer)
* [Multiple geometries in a singe table](docs_ngweb/source/postgis_details.md#multiple-geometries-in-a-singe-table)
* [PostGIS diagnostics](docs_ngweb/source/postgis_details.md#postgis-diagnostics)
* [PostGIS layer troubleshooting](docs_ngweb/source/postgis_details.md#postgis-layer-troubleshooting)
* [Create layers with conditions](docs_ngweb/source/postgis_details.md#create-layers-with-conditions)
* [WFS, WMS, TMS layers](docs_ngweb/source/connections.md)
* [WFS](docs_ngweb/source/connections.md#ngw-wfs-in)
* [WMS](docs_ngweb/source/connections.md#ngw-wms-in)
* [TMS](docs_ngweb/source/connections.md#ngw-tms-in)
* [Adding Web Maps](docs_ngweb/source/webmaps_admin.md)
* [Creating a Web Map](docs_ngweb/source/webmaps_admin.md#creating-a-web-map)
* [Web Map Layers](docs_ngweb/source/webmaps_admin.md#web-map-layers)
* [Basemaps](docs_ngweb/source/webmaps_admin.md#basemaps)
* [Settings](docs_ngweb/source/webmaps_admin.md#settings)
* [Legend](docs_ngweb/source/webmaps_admin.md#legend)
* [Extent](docs_ngweb/source/webmaps_admin.md#ngw-map-extent)
* [Bookmarks](docs_ngweb/source/webmaps_admin.md#bookmarks)
* [Hide or show panels and identification sections](docs_ngweb/source/webmaps_admin.md#hide-or-show-panels-and-identification-sections)
* [Social](docs_ngweb/source/webmaps_admin.md#social)
* [Final steps](docs_ngweb/source/webmaps_admin.md#final-steps)
* [Open Web Map settings](docs_ngweb/source/webmaps_admin.md#open-web-map-settings)
* [How to optimize Web Map performance](docs_ngweb/source/webmaps_admin.md#how-to-optimize-web-map-performance)
* [Web Map Cloning](docs_ngweb/source/webmap_clone.md)
* [Clone to another group](docs_ngweb/source/webmap_clone.md#clone-to-another-group)
* [Clone to a new group](docs_ngweb/source/webmap_clone.md#clone-to-a-new-group)
* [Web Map viewer](docs_ngweb/source/webmaps_client.md)
* [Zoom and rotation](docs_ngweb/source/webmaps_client.md#zoom-and-rotation)
* [Panels](docs_ngweb/source/webmaps_client.md#ngw-webmaps-client-panels)
* [Map tools](docs_ngweb/source/webmaps_client.md#ngw-webmaps-client-tools)
* [Share](docs_ngweb/source/webmaps_client.md#ngw-webmaps-client-share)
* [Link to a Web Map feature](docs_ngweb/source/webmaps_client.md#link-to-a-web-map-feature)
* [Legend in the layers tree](docs_ngweb/source/webmaps_client.md#legend-in-the-layers-tree)
* [Layer menu](docs_ngweb/source/webmaps_client.md#layer-menu)
* [Filter](docs_ngweb/source/webmaps_client.md#filter)
* [Feature identification](docs_ngweb/source/webmaps_client.md#ngw-webmaps-client-ident)
* [Search](docs_ngweb/source/webmaps_client.md#ngw-webmaps-client-search)
* [Basemap](docs_ngweb/source/webmaps_client.md#basemap)
* [Contact Web GIS owner](docs_ngweb/source/webmaps_client.md#contact-web-gis-owner)
* [Print a Web Map or save as image](docs_ngweb/source/print.md)
* [Embed Web Map on a Web page](docs_ngweb/source/embed_webmap.md)
* [Embeded map settings](docs_ngweb/source/embed_webmap.md#embeded-map-settings)
* [Web Map Settings](docs_ngweb/source/webmap_set.md)
* [Navigation menu vizibility](docs_ngweb/source/webmap_set.md#navigation-menu-vizibility)
* [Identify panel](docs_ngweb/source/webmap_set.md#ngw-contr-panel-webmap-ident)
* [Measurements](docs_ngweb/source/webmap_set.md#measurements)
* [Address search](docs_ngweb/source/webmap_set.md#address-search)
* [Favorites](docs_ngweb/source/favorites.md)
* [How to add Web Map fragment to Favorites](docs_ngweb/source/favorites.md#how-to-add-web-map-fragment-to-favorites)
* [Favorites list editing](docs_ngweb/source/favorites.md#favorites-list-editing)
* [Web Map annotations](docs_ngweb/source/annotation.md)
* [Annotation. What is it?](docs_ngweb/source/annotation.md#annotation-what-is-it)
* [How to enable Web Map annotations?](docs_ngweb/source/annotation.md#how-to-enable-web-map-annotations)
* [Web Map: Annotations panel](docs_ngweb/source/annotation.md#web-map-annotations-panel)
* [Web Map: annotation editting](docs_ngweb/source/annotation.md#web-map-annotation-editting)
* [Web Map: user’s permissions associated with annotations](docs_ngweb/source/annotation.md#web-map-user-s-permissions-associated-with-annotations)
* [Managing users](docs_ngweb/source/users.md)
* [Create new user group](docs_ngweb/source/users.md#create-new-user-group)
* [Global permissions](docs_ngweb/source/users.md#global-permissions)
* [How to find user identification number](docs_ngweb/source/users.md#how-to-find-user-identification-number)
* [Disable or delete users](docs_ngweb/source/users.md#disable-or-delete-users)
* [How to bind NextGIS ID to an existing Web GIS user](docs_ngweb/source/users.md#how-to-bind-nextgis-id-to-an-existing-web-gis-user)
* [Create new local user](docs_ngweb/source/users.md#create-new-local-user)
* [Update local user password](docs_ngweb/source/users.md#update-local-user-password)
* [Permission system in NextGIS Web](docs_ngweb/source/permissions.md)
* [Permissions and its types (scopes)](docs_ngweb/source/permissions.md#permissions-and-its-types-scopes)
* [Access control list and the rules](docs_ngweb/source/permissions.md#access-control-list-and-the-rules)
* [Permissions dependencies](docs_ngweb/source/permissions.md#permissions-dependencies)
* [Computing Effective Permissions](docs_ngweb/source/permissions.md#computing-effective-permissions)
* [Assigning permissions to users before their first sign in](docs_ngweb/source/permissions.md#assigning-permissions-to-users-before-their-first-sign-in)
* [Spacial Reference Systems](docs_ngweb/source/ngw_srs.md)
* [Custom Spacial Reference Systems](docs_ngweb/source/ngw_srs.md#custom-spacial-reference-systems)
* [How to edit or delete SRS](docs_ngweb/source/ngw_srs.md#how-to-edit-or-delete-srs)
* [Usage of additional SRS](docs_ngweb/source/ngw_srs.md#usage-of-additional-srs)
* [Custom SRS support for external PostGIS Databases](docs_ngweb/source/ngw_srs.md#custom-srs-support-for-external-postgis-databases)
* [Collector projects](docs_ngweb/source/collector.md)
* [List of collectors](docs_ngweb/source/collector.md#list-of-collectors)
* [Data collection project](docs_ngweb/source/collector.md#ngw-collector-create-project)
* [Form for data collection](docs_ngweb/source/collector.md#form-for-data-collection)
* [Form elements](docs_ngweb/source/form_elements.md)
* [Label](docs_ngweb/source/form_elements.md#id2)
* [Spacer](docs_ngweb/source/form_elements.md#id4)
* [Tabs](docs_ngweb/source/form_elements.md#id6)
* [Text edit](docs_ngweb/source/form_elements.md#text-edit)
* [Checkbox](docs_ngweb/source/form_elements.md#checkbox)
* [Date and time](docs_ngweb/source/form_elements.md#datetime)
* [Coordinates](docs_ngweb/source/form_elements.md#id10)
* [Distance meter](docs_ngweb/source/form_elements.md#distance)
* [Average calculator](docs_ngweb/source/form_elements.md#average)
* [Photo](docs_ngweb/source/form_elements.md#id14)
* [System field](docs_ngweb/source/form_elements.md#sytem)
* [Dropdown](docs_ngweb/source/form_elements.md#id17)
* [Dual dropdown](docs_ngweb/source/form_elements.md#id19)
* [Radio group](docs_ngweb/source/form_elements.md#radio)
* [Dependent dropdowns](docs_ngweb/source/form_elements.md#dependet-dropdown)
* [Import options](docs_ngweb/source/form_elements.md#import-options)
* [Import options from CSV](docs_ngweb/source/form_elements.md#import-options-from-csv)
* [Data collection on premise](docs_ngweb/source/data_collection_on_premise.md)
* [Introduction](docs_ngweb/source/data_collection_on_premise.md#introduction)
* [Administrator’s check-list](docs_ngweb/source/data_collection_on_premise.md#administrator-s-check-list)
* [Trackers settings](docs_ngweb/source/trackers.md)
* [Viewing tracks on a Web Map](docs_ngweb/source/trackers.md#viewing-tracks-on-a-web-map)
* [Reports](docs_ngweb/source/trackers.md#reports)
* [Export to GPX](docs_ngweb/source/trackers.md#export-to-gpx)
* [Cross-origin resource sharing (CORS)](docs_ngweb/source/cors.md)
* [Web GIS information](docs_ngweb/source/infowebgis.md)
* [System information](docs_ngweb/source/infowebgis.md#system-information)
* [Plan and features](docs_ngweb/source/infowebgis.md#plan-and-features)
* [Storage](docs_ngweb/source/infowebgis.md#storage)
* [Available updates](docs_ngweb/source/infowebgis.md#available-updates)
* [Backup policy](docs_ngweb/source/infowebgis.md#backup-policy)
* [Backups](docs_ngweb/source/infowebgis.md#backups)
* [User activity log](docs_ngweb/source/infowebgis.md#user-activity-log)
* [Metrics and analytics](docs_ngweb/source/analytics.md)
* [Design customization](docs_ngweb/source/look.md)
* [Web GIS name](docs_ngweb/source/look.md#web-gis-name)
* [Font management](docs_ngweb/source/look.md#font-management)
* [Upload a logo](docs_ngweb/source/look.md#upload-a-logo)
* [Customize the design with CSS](docs_ngweb/source/look.md#customize-the-design-with-css)
* [Custom CSS examples](docs_ngweb/source/look.md#custom-css-examples)
* [Hide resource export](docs_ngweb/source/look.md#hide-resource-export)
* [How to change the homepage address](docs_ngweb/source/look.md#how-to-change-the-homepage-address)
* [How to change Web GIS domain](docs_ngweb/source/domain.md)
* [Customize UI Elements (White label)](docs_ngweb/source/label.md)
* [Company logo on Web Map](docs_ngweb/source/label.md#company-logo-on-web-map)
* [Company URL](docs_ngweb/source/label.md#company-url)
* [Help page](docs_ngweb/source/label.md#help-page)
* [Support URL](docs_ngweb/source/label.md#support-url)
* [Other items](docs_ngweb/source/label.md#other-items)
* [NextGIS Web on-premise](docs_ngweb/source/ngw_op.md)
* [System requirements](docs_ngweb/source/op_sys_req.md)
* [Installation](docs_ngweb/source/op_install.md)
* [Endpoints](docs_ngweb/source/op_install.md#endpoints)
* [Install and configure Docker](docs_ngweb/source/op_install.md#install-and-configure-docker)
* [Deploy Docker stack](docs_ngweb/source/op_install.md#deploy-docker-stack)
* [Weekly maintenance and backup](docs_ngweb/source/op_install.md#weekly-maintenance-and-backup)
* [Backups](docs_ngweb/source/op_backup.md)
* [Backups location](docs_ngweb/source/op_backup.md#backups-location)
* [Offline backup](docs_ngweb/source/op_backup.md#offline-backup)
* [Online backup](docs_ngweb/source/op_backup.md#online-backup)
* [Upgrade](docs_ngweb/source/op_upgrade.md)
* [Upgrade to 3.3.x from 3.2.x](docs_ngweb/source/op_upgrade.md#upgrade-to-3-3-x-from-3-2-x)
* [Upgrade to 3.2.x from 3.1.x](docs_ngweb/source/op_upgrade.md#upgrade-to-3-2-x-from-3-1-x)
* [Upgrade to 3.1.x from 3.0.x](docs_ngweb/source/op_upgrade.md#upgrade-to-3-1-x-from-3-0-x)
* [Upgrade to 3.0.x from 2.9.x](docs_ngweb/source/op_upgrade.md#upgrade-to-3-0-x-from-2-9-x)
* [Upgrade to 2.9.x from 2.8.x](docs_ngweb/source/op_upgrade.md#upgrade-to-2-9-x-from-2-8-x)
* [Upgrade to 2.8.x from 2.7.x](docs_ngweb/source/op_upgrade.md#upgrade-to-2-8-x-from-2-7-x)
* [Upgrade to 2.7.x from 2.6.x](docs_ngweb/source/op_upgrade.md#upgrade-to-2-7-x-from-2-6-x)
* [Upgrade to 2.6.x from 2.5.x](docs_ngweb/source/op_upgrade.md#upgrade-to-2-6-x-from-2-5-x)
* [Upgrade to 2.5.x from earlier versions](docs_ngweb/source/op_upgrade.md#upgrade-to-2-5-x-from-earlier-versions)
* [Configure](docs_ngweb/source/op_setup.md)
* [Change endpoints](docs_ngweb/source/op_setup.md#change-endpoints)
* [Migrating to another server](docs_ngweb/source/op_setup.md#migrating-to-another-server)
* [Additional information](docs_ngweb/source/op_additional.md)
* [Examples of docker-compose.yaml](docs_ngweb/source/op_additional.md#examples-of-docker-compose-yaml)
* [Configuring reverse proxy: Nginx](docs_ngweb/source/op_additional.md#configuring-reverse-proxy-nginx)
* [Changelog](docs_ngweb/source/sysadmin_updates.md)
* [NextGIS Web 3D](docs_ngweb_3D/source/index.md)
* [Introduction](docs_ngweb_3D/source/intro.md)
* [Uploading 3D Models](docs_ngweb_3D/source/3D_models.md)
* [Uploading and storing 3D datasets](docs_ngweb_3D/source/3D_tilesets.md)
* [Uploading elevation data](docs_ngweb_3D/source/DEM.md)
* [3D data Styles](docs_ngweb_3D/source/3D_style.md)
* [General](docs_ngweb_3D/source/3D_style.md#general)
* [3D Style](docs_ngweb_3D/source/3D_style.md#d-style)
* [POI](docs_ngweb_3D/source/3D_style.md#poi)
* [3D Model](docs_ngweb_3D/source/3D_style.md#d-model)
* [Creation of 3D scenes](docs_ngweb_3D/source/3D_scenes.md)
* [Rendering 3D scenes](docs_ngweb_3D/source/3D_scene_visualization.md)
* [NextGIS Toolbox on-premise](docs_toolbox_prem/source/index.md)
* [Overview](docs_toolbox_prem/source/intro.md)
* [System requirements](docs_toolbox_prem/source/sys_req.md)
* [Authorization](docs_toolbox_prem/source/auth.md)
* [User interface](docs_toolbox_prem/source/ui.md)
* [Tools](docs_toolbox_prem/source/tools.md)
* [Administrator manual for NextGIS Toolbox on-premise](docs_toolbox_prem/source/admin.md)
* [Select connection addresses](docs_toolbox_prem/source/admin.md#select-connection-addresses)
* [NextGIS ID authorization](docs_toolbox_prem/source/admin.md#nextgis-id-authorization)
* [Install and configure Docker](docs_toolbox_prem/source/admin.md#install-and-configure-docker)
* [Install NextGIS Toolbox](docs_toolbox_prem/source/admin.md#install-nextgis-toolbox)
* [Recommendations for reverse proxy setup](docs_toolbox_prem/source/admin.md#recommendations-for-reverse-proxy-setup)
* [Operability check](docs_toolbox_prem/source/admin.md#operability-check)
* [NextGIS GeoServices on-premise](docs_geoserv_prem/source/index.md)
* [Introduction](docs_geoserv_prem/source/intro.md)
* [System requirements](docs_geoserv_prem/source/sys_req.md)
* [Minimum hardware requirements](docs_geoserv_prem/source/sys_req.md#minimum-hardware-requirements)
* [Recommended OS](docs_geoserv_prem/source/sys_req.md#recommended-os)
* [Authorization](docs_geoserv_prem/source/auth.md)
* [Services](docs_geoserv_prem/source/services.md)
* [Service groups](docs_geoserv_prem/source/services.md#service-groups)
* [Add service](docs_geoserv_prem/source/services.md#add-service)
* [Basemap](docs_geoserv_prem/source/services.md#id1)
* [NextGIS Web](docs_geoserv_prem/source/services.md#nextgis-web)
* [External TMS](docs_geoserv_prem/source/services.md#external-tms)
* [Tileset](docs_geoserv_prem/source/services.md#tileset)
* [Seeding](docs_geoserv_prem/source/services.md#seeding)
* [Settings](docs_geoserv_prem/source/settings.md)
* [Profile](docs_geoserv_prem/source/settings.md#profile)
* [Users and user groups](docs_geoserv_prem/source/settings.md#users-and-user-groups)
* [Basemap](docs_geoserv_prem/source/settings.md#basemap)
* [Log](docs_geoserv_prem/source/settings.md#log)
* [Storage](docs_geoserv_prem/source/settings.md#storage)
* [About](docs_geoserv_prem/source/settings.md#about)
* [Access permissions](docs_geoserv_prem/source/permissions.md)
* [How different permission rules work together](docs_geoserv_prem/source/permissions.md#how-different-permission-rules-work-together)
* [Installation (Administrator manual)](docs_geoserv_prem/source/admin.md)
* [Introduction](docs_geoserv_prem/source/admin.md#introduction)
* [Select endpoints](docs_geoserv_prem/source/admin.md#select-endpoints)
* [Install and configure Docker](docs_geoserv_prem/source/admin.md#install-and-configure-docker)
* [Install NextGIS GeoServices](docs_geoserv_prem/source/admin.md#install-nextgis-geoservices)
* [Recommendations for reverse proxy setup](docs_geoserv_prem/source/admin.md#recommendations-for-reverse-proxy-setup)
* [Operability check](docs_geoserv_prem/source/admin.md#nggs-prem-admin-check)
* [Upgrade](docs_geoserv_prem/source/upgrade.md)
* [Upgrade to 2.26.x from 2.25.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-26-x-from-2-25-x)
* [Upgrade to 2.25.x from 2.24.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-25-x-from-2-24-x)
* [Upgrade to 2.24.x from 2.23.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-24-x-from-2-23-x)
* [Upgrade to 2.23.x from 2.22.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-23-x-from-2-22-x)
* [Upgrade to 2.22.x from 2.21.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-22-x-from-2-21-x)
* [Upgrade to 2.21.x from 2.20.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-21-x-from-2-20-x)
* [Upgrade to 2.20.x from 2.19.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-20-x-from-2-19-x)
* [Upgrade to 2.19.x from 2.18.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-19-x-from-2-18-x)
* [Upgrade to 2.18.x from 2.17.x](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-18-x-from-2-17-x)
* [Upgrade to 2.17.x from 2.16.1](docs_geoserv_prem/source/upgrade.md#upgrade-to-2-17-x-from-2-16-1)
* [For versions 2.16.1 and below](docs_geoserv_prem/source/upgrade.md#for-versions-2-16-1-and-below)
* [Changelog](docs_geoserv_prem/source/changelog.md)
* [NextGIS ID](docs_ngid/source/index.md)
* [Introduction](docs_ngid/source/intro.md)
* [Overview](docs_ngid/source/ngidop.md)
* [Authorization and profile](docs_ngid/source/ngidop.md#authorization-and-profile)
* [Team](docs_ngid/source/ngidop.md#team)
* [OAuth applications](docs_ngid/source/ngidop.md#oauth-applications)
* [Setting up LDAP](docs_ngid/source/ngidop.md#setting-up-ldap)
* [NextGIS ID on-premise identificator](docs_ngid/source/ngidop.md#nextgis-id-on-premise-identificator)
* [Plugins for QGIS](docs_ngqgis/source/plugins.md)
* [Install plugins](docs_ngqgis/source/install_plugin.md)
* [Update plugins](docs_ngqgis/source/update_plugins.md)
* [Check installed verison of a plugin](docs_ngqgis/source/update_plugins.md#check-installed-verison-of-a-plugin)
* [Gather logs in QGIS](docs_ngqgis/source/logs.md)
* [Log messages](docs_ngqgis/source/logs.md#log-messages)
* [Capture outgoing requests in QGIS](docs_ngqgis/source/logs.md#capture-outgoing-requests-in-qgis)
* [Capturing GDAL logs for QGIS on Windows](docs_ngqgis/source/logs.md#capturing-gdal-logs-for-qgis-on-windows)
* [QuickMapServices: most downloaded QGIS plugin](docs_ngqgis/source/qms.md)
* [How to add basemaps and other services to QGIS](docs_ngqgis/source/qms.md#how-to-add-basemaps-and-other-services-to-qgis)
* [Settings](docs_ngqgis/source/qms.md#settings)
* [IdentifyPlus](docs_ngqgis/source/identifyplus.md)
* [NextGIS EasyQuery](docs_ngqgis/source/easyquery.md)
* [Installation](docs_ngqgis/source/easyquery.md#installation)
* [Usage](docs_ngqgis/source/easyquery.md#usage)
* [Digitizr](docs_ngqgis/source/digitizr.md)
* [MOLUSCE](docs_ngqgis/source/molusce.md)
* [How to prepare input data](docs_ngqgis/source/molusce.md#how-to-prepare-input-data)
* [Loading data and model training](docs_ngqgis/source/molusce.md#loading-data-and-model-training)
* [Cellular Automata Simulation](docs_ngqgis/source/molusce.md#cellular-automata-simulation)
* [Validation](docs_ngqgis/source/molusce.md#validation)
* [Geometry Paster](docs_ngqgis/source/geom_paster.md)
* [OSMInfo](docs_ngqgis/source/osminfo.md)
* [Feature identification](docs_ngqgis/source/osminfo.md#feature-identification)
* [Feature context menu](docs_ngqgis/source/osminfo.md#feature-context-menu)
* [Search OpenStreetMap features](docs_ngqgis/source/osminfo.md#search-openstreetmap-features)
* [Plugin settings](docs_ngqgis/source/osminfo.md#plugin-settings)
* [Click-Fu](docs_ngqgis/source/clickfu.md)
* [DumpLoadField](docs_ngqgis/source/dumploadfield.md)
* [Add text field to vector layer attributes](docs_ngqgis/source/dumploadfield.md#add-text-field-to-vector-layer-attributes)
* [Download text values of an attribute](docs_ngqgis/source/dumploadfield.md#download-text-values-of-an-attribute)
* [QTiles](docs_ngqgis/source/qtiles.md)
* [Connect Points](docs_ngqgis/source/connectpoints.md)
* [Copy_Coords](docs_ngqgis/source/copycoords.md)
* [Points2One](docs_ngqgis/source/points2one.md)
* [Join lines](docs_ngqgis/source/joinlines.md)
* [MultiQML](docs_ngqgis/source/multiqml.md)
* [Quickly save default QML](docs_ngqgis/source/quicksaveqml.md)
* [NextGIS OGRStyle](docs_ngqgis/source/ogrstyle.md)
* [Send2GE](docs_ngqgis/source/send2ge.md)
* [How to open a location from QGIS in Google Earth](docs_ngqgis/source/send2ge.md#how-to-open-a-location-from-qgis-in-google-earth)
* [OSMPoly_export](docs_ngqgis/source/osmpoly_export.md)
* [Shortcut Manager](docs_ngqgis/source/shortcut.md)
* [ReconstructLine](docs_ngqgis/source/reconstructline.md)
* [Wurman Dots](docs_ngqgis/source/wurman_dots.md)
* [QGIS DevTools — debugging QGIS plugins](docs_ngqgis/source/devtools.md)
* [Preface](docs_ngqgis/source/devtools.md#preface)
* [Set up QGIS](docs_ngqgis/source/devtools.md#set-up-qgis)
* [Install Python debugger extension in VS Code](docs_ngqgis/source/devtools.md#install-python-debugger-extension-in-vs-code)
* [Debug a plugin](docs_ngqgis/source/devtools.md#debug-a-plugin)
* [Debug a script](docs_ngqgis/source/devtools.md#debug-a-script)
* [Conclusion](docs_ngqgis/source/devtools.md#conclusion)
* [NextGIS Toolbox](docs_ngqgis/source/toolbox.md)
* [API key](docs_ngqgis/source/toolbox.md#api-key)
* [NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/index.html)
* [NextGIS QGIS](docs_ngqgis/source/index.md)
* [Plugins for QGIS](docs_ngqgis/source/plugins.md)
* [Install plugins](docs_ngqgis/source/install_plugin.md)
* [Update plugins](docs_ngqgis/source/update_plugins.md)
* [Gather logs in QGIS](docs_ngqgis/source/logs.md)
* [QuickMapServices: most downloaded QGIS plugin](docs_ngqgis/source/qms.md)
* [IdentifyPlus](docs_ngqgis/source/identifyplus.md)
* [NextGIS EasyQuery](docs_ngqgis/source/easyquery.md)
* [Digitizr](docs_ngqgis/source/digitizr.md)
* [MOLUSCE](docs_ngqgis/source/molusce.md)
* [Geometry Paster](docs_ngqgis/source/geom_paster.md)
* [OSMInfo](docs_ngqgis/source/osminfo.md)
* [Click-Fu](docs_ngqgis/source/clickfu.md)
* [DumpLoadField](docs_ngqgis/source/dumploadfield.md)
* [QTiles](docs_ngqgis/source/qtiles.md)
* [Connect Points](docs_ngqgis/source/connectpoints.md)
* [Copy_Coords](docs_ngqgis/source/copycoords.md)
* [Points2One](docs_ngqgis/source/points2one.md)
* [Join lines](docs_ngqgis/source/joinlines.md)
* [MultiQML](docs_ngqgis/source/multiqml.md)
* [Quickly save default QML](docs_ngqgis/source/quicksaveqml.md)
* [NextGIS OGRStyle](docs_ngqgis/source/ogrstyle.md)
* [Send2GE](docs_ngqgis/source/send2ge.md)
* [OSMPoly_export](docs_ngqgis/source/osmpoly_export.md)
* [Shortcut Manager](docs_ngqgis/source/shortcut.md)
* [ReconstructLine](docs_ngqgis/source/reconstructline.md)
* [Wurman Dots](docs_ngqgis/source/wurman_dots.md)
* [QGIS DevTools — debugging QGIS plugins](docs_ngqgis/source/devtools.md)
* [NextGIS Toolbox](docs_ngqgis/source/toolbox.md)
* [NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/index.html)
* [NextGIS QGIS](docs_ngqgis/source/intro.md)
* [NextGIS Connect for QGIS](docs_ngconnect/source/index.md)
* [Overview](docs_ngconnect/source/ngconnect.md)
* [Installation](docs_ngconnect/source/ngc_install.md)
* [Create a connection](docs_ngconnect/source/ngc_install.md#create-a-connection)
* [Keycloak authentication in NextGIS QGIS](docs_ngconnect/source/ngc_install.md#keycloak-authentication-in-nextgis-qgis)
* [Plugin interface](docs_ngconnect/source/panel.md)
* [Refresh](docs_ngconnect/source/panel.md#refresh)
* [Display in browser](docs_ngconnect/source/panel.md#display-in-browser)
* [Context Menu](docs_ngconnect/source/panel.md#context-menu)
* [Main Settings](docs_ngconnect/source/ngc_settings.md)
* [Connections](docs_ngconnect/source/ngc_settings.md#connections)
* [Uploading](docs_ngconnect/source/ngc_settings.md#uploading)
* [Resources](docs_ngconnect/source/ngc_settings.md#resources)
* [Searching](docs_ngconnect/source/ngc_settings.md#searching)
* [Synchronization](docs_ngconnect/source/ngc_settings.md#synchronization)
* [Cache settings](docs_ngconnect/source/ngc_settings.md#cache-settings)
* [Other settings](docs_ngconnect/source/ngc_settings.md#other-settings)
* [Proxy server settings](docs_ngconnect/source/ngc_settings.md#proxy-server-settings)
* [Search and filter](docs_ngconnect/source/filter.md)
* [Search by name](docs_ngconnect/source/filter.md#search-by-name)
* [Search by URL](docs_ngconnect/source/filter.md#search-by-url)
* [Filter by expression](docs_ngconnect/source/filter.md#filter-by-expression)
* [Metadata search](docs_ngconnect/source/filter.md#metadata-search)
* [Resource types](docs_ngconnect/source/filter.md#resource-types)
* [How to find identification numbers](docs_ngconnect/source/filter.md#how-to-find-identification-numbers)
* [Upload data to the cloud storage](docs_ngconnect/source/ngc_data_transfer.md)
* [Resource types](docs_ngconnect/source/ngc_data_transfer.md#resource-types)
* [Upload entire QGIS project](docs_ngconnect/source/ngc_data_transfer.md#upload-entire-qgis-project)
* [Upload vector data](docs_ngconnect/source/ngc_data_transfer.md#upload-vector-data)
* [Upload raster data](docs_ngconnect/source/ngc_data_transfer.md#upload-raster-data)
* [Upload basemap](docs_ngconnect/source/ngc_data_transfer.md#upload-basemap)
* [Working with cloud data](docs_ngconnect/source/resources.md)
* [From Web GIS to QGIS](docs_ngconnect/source/resources.md#from-web-gis-to-qgis)
* [Add vector layer to QGIS](docs_ngconnect/source/resources.md#add-vector-layer-to-qgis)
* [Lookup tables](docs_ngconnect/source/resources.md#lookup-tables)
* [Synchronization with Web GIS](docs_ngconnect/source/resources.md#synchronization-with-web-gis)
* [Open a project created on another device](docs_ngconnect/source/resources.md#open-a-project-created-on-another-device)
* [Edit data](docs_ngconnect/source/edit.md)
* [Multi user editing](docs_ngconnect/source/edit.md#multi-user-editing)
* [Resolve edit confilcts](docs_ngconnect/source/edit.md#resolve-edit-confilcts)
* [Change layer structure](docs_ngconnect/source/edit.md#change-layer-structure)
* [Edit layer with WFS](docs_ngconnect/source/edit.md#edit-layer-with-wfs)
* [Update data](docs_ngconnect/source/edit.md#update-data)
* [Update style](docs_ngconnect/source/edit.md#update-style)
* [Copy style from Web GIS](docs_ngconnect/source/edit.md#copy-style-from-web-gis)
* [Export to file](docs_ngconnect/source/export.md)
* [Save layer as file](docs_ngconnect/source/export.md#save-layer-as-file)
* [Save vector layer style](docs_ngconnect/source/export.md#save-vector-layer-style)
* [Manage resources](docs_ngconnect/source/manage.md)
* [Create resource group](docs_ngconnect/source/manage.md#create-resource-group)
* [Create Web Map from a layer](docs_ngconnect/source/manage.md#create-web-map-from-a-layer)
* [Create empty vector layer](docs_ngconnect/source/manage.md#create-empty-vector-layer)
* [Create service](docs_ngconnect/source/manage.md#create-service)
* [Duplicate resource](docs_ngconnect/source/manage.md#duplicate-resource)
* [Delete resource](docs_ngconnect/source/manage.md#delete-resource)
* [Troubleshooting](docs_ngconnect/source/troubleshooting.md)
* [Problems connecting to Web GIS (NGW)](docs_ngconnect/source/troubleshooting.md#problems-connecting-to-web-gis-ngw)
* [Issues uploading data](docs_ngconnect/source/troubleshooting.md#issues-uploading-data)
* [NextGIS Mobile](docs_ngmobile/source/index.md)
* [Introduction](docs_ngmobile/source/intro.md)
* [About NextGIS Mobile](docs_ngmobile/source/intro.md#about-nextgis-mobile)
* [Hardware and software requirements](docs_ngmobile/source/intro.md#hardware-and-software-requirements)
* [Installation](docs_ngmobile/source/install.md)
* [Authorization](docs_ngmobile/source/auth.md)
* [Via my.nextgis.com](docs_ngmobile/source/auth.md#via-my-nextgis-com)
* [Via on-premise (NGIDOP)](docs_ngmobile/source/auth.md#via-on-premise-ngidop)
* [User interface (UI)](docs_ngmobile/source/main.md)
* [Main screen](docs_ngmobile/source/main.md#main-screen)
* [Layers tree](docs_ngmobile/source/main.md#layers-tree)
* [Features table](docs_ngmobile/source/main.md#features-table)
* [Useful features](docs_ngmobile/source/main.md#useful-features)
* [Settings dialogue](docs_ngmobile/source/settings.md)
* [General](docs_ngmobile/source/settings.md#ngmobile-settings-gen)
* [Map](docs_ngmobile/source/settings.md#ngmobile-settings-map)
* [Restore layers](docs_ngmobile/source/settings.md#restore-layers)
* [Location](docs_ngmobile/source/settings.md#ngmobile-settings-loc)
* [My tracks](docs_ngmobile/source/settings.md#ngmobile-settings-tracks)
* [Adding layers](docs_ngmobile/source/load_geodata.md)
* [Creating new vector layer](docs_ngmobile/source/load_geodata.md#creating-new-vector-layer)
* [Creating vector layer from GeoJSON data](docs_ngmobile/source/load_geodata.md#creating-vector-layer-from-geojson-data)
* [Creating vector layer from Custom forms (NGFP)](docs_ngmobile/source/load_geodata.md#creating-vector-layer-from-custom-forms-ngfp)
* [Creating raster layer from Tile cache (XYZ/TMS)](docs_ngmobile/source/load_geodata.md#creating-raster-layer-from-tile-cache-xyz-tms)
* [Creating raster layer from Tile cache (NGRC)](docs_ngmobile/source/load_geodata.md#creating-raster-layer-from-tile-cache-ngrc)
* [Creating raster layer from external geoservice](docs_ngmobile/source/load_geodata.md#creating-raster-layer-from-external-geoservice)
* [Adding geodata from Web GIS](docs_ngmobile/source/load_geodata.md#adding-geodata-from-web-gis)
* [Editing layers](docs_ngmobile/source/editing.md)
* [Switching to Edit mode](docs_ngmobile/source/editing.md#switching-to-edit-mode)
* [The Editing Toolbar](docs_ngmobile/source/editing.md#the-editing-toolbar)
* [Adding features](docs_ngmobile/source/editing.md#adding-features)
* [Adding current location](docs_ngmobile/source/editing.md#adding-current-location)
* [Adding line or polygon by walk](docs_ngmobile/source/editing.md#adding-line-or-polygon-by-walk)
* [Editing a geometry](docs_ngmobile/source/editing.md#editing-a-geometry)
* [Editing attributes](docs_ngmobile/source/editing.md#editing-attributes)
* [Tracks](docs_ngmobile/source/tracks.md)
* [Settings](docs_ngmobile/source/tracks.md#settings)
* [Recording a track](docs_ngmobile/source/tracks.md#recording-a-track)
* [Managing recorded tracks](docs_ngmobile/source/tracks.md#managing-recorded-tracks)
* [Exporting data](docs_ngmobile/source/share.md)
* [Exporting data in GeoJSON](docs_ngmobile/source/share.md#exporting-data-in-geojson)
* [Exporting attachments](docs_ngmobile/source/share.md#exporting-attachments)
* [Exporting tracks in GPX](docs_ngmobile/source/share.md#exporting-tracks-in-gpx)
* [Layer settings](docs_ngmobile/source/layer_settings.md)
* [Vector layer settings](docs_ngmobile/source/layer_settings.md#vector-layer-settings)
* [Raster layer settings](docs_ngmobile/source/layer_settings.md#raster-layer-settings)
* [Integration with NextGIS Web](docs_ngmobile/source/ngw_integration.md)
* [Add a layer (vector/raster) from Web GIS](docs_ngmobile/source/ngw_integration.md#add-a-layer-vector-raster-from-web-gis)
* [Upload layer to Web GIS](docs_ngmobile/source/ngw_integration.md#upload-layer-to-web-gis)
* [Parameters for synchronization with Web GIS](docs_ngmobile/source/ngw_integration.md#parameters-for-synchronization-with-web-gis)
* [Add Web GIS connection](docs_ngmobile/source/ngw_integration.md#add-web-gis-connection)
* [Add connection to NextGIS Web on-premise](docs_ngmobile/source/ngw_integration.md#add-connection-to-nextgis-web-on-premise)
* [Edit Web GIS connection](docs_ngmobile/source/ngw_integration.md#edit-web-gis-connection)
* [Delete Web GIS connection](docs_ngmobile/source/ngw_integration.md#delete-web-gis-connection)
* [Logging](docs_ngmobile/source/log.md)
* [How to get useful logs](docs_ngmobile/source/log.md#how-to-get-useful-logs)
* [Enable logging](docs_ngmobile/source/log.md#enable-logging)
* [Send log or save as file](docs_ngmobile/source/log.md#send-log-or-save-as-file)
* [Solving problem (Q&A)](docs_ngmobile/source/faq_ngmobile.md)
* [Application sign in](docs_ngmobile/source/faq_ngmobile.md#application-sign-in)
* [Other issues](docs_ngmobile/source/faq_ngmobile.md#other-issues)
* [Simulation of location data](docs_ngmobile/source/mock_location.md)
* [Changelog](docs_ngmobile/source/changelog.md)
* [NextGIS Collector](docs_collector/source/index.md)
* [Installation](docs_collector/source/install.md)
* [Hardware and software requirements](docs_collector/source/install.md#hardware-and-software-requirements)
* [Authorization](docs_collector/source/auth.md)
* [Via cloud server (my.nextgis.com)](docs_collector/source/auth.md#via-cloud-server-my-nextgis-com)
* [Via on-premise (NGIDOP)](docs_collector/source/auth.md#via-on-premise-ngidop)
* [Change user](docs_collector/source/auth.md#change-user)
* [Working with projects](docs_collector/source/operations.md)
* [Offline data collection](docs_collector/source/operations.md#offline-data-collection)
* [Basic operations](docs_collector/source/map_tools.md)
* [Add a point](docs_collector/source/map_tools.md#add-a-point)
* [Edit a point on the map](docs_collector/source/map_tools.md#edit-a-point-on-the-map)
* [Add a line](docs_collector/source/map_tools.md#add-a-line)
* [Editing lines](docs_collector/source/map_tools.md#editing-lines)
* [Add a polygon](docs_collector/source/map_tools.md#add-a-polygon)
* [Editing polygons](docs_collector/source/map_tools.md#editing-polygons)
* [Zoom and current location](docs_collector/source/map_tools.md#zoom-and-current-location)
* [Tracks](docs_collector/source/map_tools.md#tracks)
* [Synchronization](docs_collector/source/map_tools.md#synchronization)
* [Advanced tools](docs_collector/source/adv_tools.md)
* [How to share backup](docs_collector/source/adv_tools.md#how-to-share-backup)
* [Logging](docs_collector/source/adv_tools.md#logging)
* [Simulation of location data](docs_collector/source/adv_tools.md#simulation-of-location-data)
* [Changelog](docs_collector/source/changelog.md)
* [NextGIS Tracker](docs_ngtracker/source/index.md)
* [What the app is for](docs_ngtracker/source/intro.md)
* [Installation](docs_ngtracker/source/install.md)
* [Setting up](docs_ngtracker/source/setting_up.md)
* [Track recording settings](docs_ngtracker/source/setting_up.md#track-recording-settings)
* [Setting up sending tracks to Web GIS](docs_ngtracker/source/setting_up.md#setting-up-sending-tracks-to-web-gis)
* [User interface](docs_ngtracker/source/ui.md)
* [Main screen](docs_ngtracker/source/ui.md#main-screen)
* [Settings](docs_ngtracker/source/ui.md#settings)
* [Track recording](docs_ngtracker/source/rec_track.md)
* [Export track as GPX](docs_ngtracker/source/export.md)
* [Viewing tracks on a Web Map in Web GIS](docs_ngtracker/source/view_webgis.md)
* [NextGIS GeoServices](docs_geoservices/source/index.md)
* [Introduction](docs_geoservices/source/intro.md)
* [Authorization](docs_geoservices/source/auth.md)
* [Basemap services](docs_geoservices/source/basemap_tiles.md)
* [Reissue of API key](docs_geoservices/source/reissue_api_key.md)
* [NextGIS Web for developers](docs_ngweb_dev/doc/toc.md)
* [NextGIS Web REST API](docs_ngweb_dev/doc/developer/toc.md)
* [Authorization](docs_ngweb_dev/doc/developer/auth.md)
* [Managing users](docs_ngweb_dev/doc/developer/auth.md#managing-users)
* [Managing groups](docs_ngweb_dev/doc/developer/auth.md#managing-groups)
* [Automatically creating users](docs_ngweb_dev/doc/developer/auth.md#automatically-creating-users)
* [Get resource permissions](docs_ngweb_dev/doc/developer/auth.md#get-resource-permissions)
* [Resources](docs_ngweb_dev/doc/developer/resource.md)
* [Create resource](docs_ngweb_dev/doc/developer/create.md)
* [File upload](docs_ngweb_dev/doc/developer/file_upload.md)
* [Editing](docs_ngweb_dev/doc/developer/change.md)
* [Miscellaneous](docs_ngweb_dev/doc/developer/misc.md)
* [Error reporting](docs_ngweb_dev/doc/developer/error_report.md)
* [Vector layer data types](docs_ngweb_dev/doc/developer/vector_data_types.md)
* [Python API library](docs_ngweb_dev/doc/developer/python_api.md)
* [ogr2ogr](docs_ngweb_dev/doc/developer/ogr2ogr.md)
* [NextGIS Web internals](docs_ngweb_dev/doc/internal/toc.md)
* [Components and environment](docs_ngweb_dev/doc/internal/component.md)
* [Modern JavaScript](docs_ngweb_dev/doc/internal/jsrealm.md)
* [Long-running API requests](docs_ngweb_dev/doc/internal/lunkwill.md)
* [Internationalization and localization](docs_ngweb_dev/doc/internal/i18n.md)
* [Testing framework](docs_ngweb_dev/doc/internal/test.md)
* [Package versioning](docs_ngweb_dev/doc/internal/versioning.md)
* [Database migrations](docs_ngweb_dev/doc/internal/migration.md)
* [URLs and routes](docs_ngweb_dev/doc/internal/url_route.md)
* [Describing API](docs_ngweb_dev/doc/internal/apitype.md)
* [Code formatting](docs_ngweb_dev/doc/internal/code_formatting.md)
* [NextGIS Web administrator’s guide](docs_ngweb_dev/doc/admin/toc.md)
* [Installation](docs_ngweb_dev/doc/admin/install.md)
* [Configuration](docs_ngweb_dev/doc/admin/configure.md)
* [Backup and restore](docs_ngweb_dev/doc/admin/backup_restore.md)
* [Upgrade](docs_ngweb_dev/doc/admin/upgrade.md)
* [NextGIS QMS Service API](qms_srv_dev/doc/api.md)
* [API Root](qms_srv_dev/doc/api.md#api-root)
* [Geo Service List](qms_srv_dev/doc/api.md#geo-service-list)
* [Geo Service filtered list](qms_srv_dev/doc/api.md#geo-service-filtered-list)
* [Geo Service Details](qms_srv_dev/doc/api.md#geo-service-details)
* [Geo Service Icon](qms_srv_dev/doc/api.md#geo-service-icon)
* [NextGIS Tracker hub for developers](tracker_hub_dev/source/main.md)
* [Send location packet](tracker_hub_dev/source/main.md#send-location-packet)
* [Check tracker is registered at tracker hub](tracker_hub_dev/source/main.md#check-tracker-is-registered-at-tracker-hub)
* [Get track points](tracker_hub_dev/source/main.md#get-track-points)
* [Short output 1](tracker_hub_dev/source/main.md#short-output-1)
* [Short output 2](tracker_hub_dev/source/main.md#short-output-2)
* [Full output](tracker_hub_dev/source/main.md#full-output)
# solar_hours.html.md
# Sunlight hours prediction
Predict the number of daily sunlight hours for a specific latitude and longitude.
Inputs:
* Latitude of the location (WGS84, decimal degrees);
* Longitude of the location (WGS84, decimal degrees);
* Period for which to calculate sunlight hours. Fill in one of the fields:
* Year, or
* Date.
Outputs:
If a date is selected:
* Text output: number of sunlight hours for the selected date.
If a year is selected:
* Text output: predicted average number of sunlight hours per day;
* CSV table with sunlight hours for every date of the year;
* PNG diagram of sunlight hours for the selected period.
Launch the tool: [https://toolbox.nextgis.com/t/solar_hours](https://toolbox.nextgis.com/t/solar_hours)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# spatial_join.html.md
# Spatial Join (Join by location)
Insert into layer 1 attribute from intersects feature in layer 2
Inputs:
* Vector layer 1
* Polygon layer 2
* Name of attibute in layer 2
Outputs:
* ZIP with Shapefile layer 1 with added attribute
* QML style file

Launch the tool: [https://toolbox.nextgis.com/t/spatial_join](https://toolbox.nextgis.com/t/spatial_join)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# spectral_indices.html.md
# Compute spectral index
Compute normalized difference spectral indices (NDVI, NDWI, NBR) from Sentinel-2 or Landsat time series. Produces temporal aggregates (mean, max, min, stddev, range) aligned to the terrain analysis grid.
Inputs:
* Satellite Imagery Package - ZIP file from [Search & download Planetary Computer](https://toolbox.nextgis.com/t/planetary_search) containing Sentinel-2 or Landsat band GeoTIFFs and manifest.json with time_series;
* Spectral Index. Type of normalized difference index to compute:
- NDVI (Vegetation) (NDVI);
- NDWI (Water) (NDWI);
- NBR (Burn Ratio) (NBR);
* Generate series - tick to generate series rasters (max, min, std etc.) if multiple inputs are provided.
Outputs:
* ZIP archive with spectral index aggregates, statistics, and manifest;
* Human-readable summary of the spectral index results;
* JSON manifest string describing all outputs.
Launch the tool: [https://toolbox.nextgis.com/t/spectral_indices](https://toolbox.nextgis.com/t/spectral_indices)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# split180.html.md
# Split at 180th meridian
Split vector layer feature geometries at antimeridian (180th meridian).
Such split is often required for correct use of such feature in different GIS software and for correct visualization on online maps.

Inputs:
* Vector layer in a GDAL-supported format, e.g. GeoPackage, GeoJSON, MapInfo TAB, ESRI Shapefile (the latter two should be in ZIP archive).
Outputs:
* Vector layer in GeoPackage.
To make sure the layer is correctly displayed on the Web Map, set the adapter to “Tiles”.
Launch the tool: [https://toolbox.nextgis.com/t/split180](https://toolbox.nextgis.com/t/split180)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# split_to_equal.html.md
# Split into equal parts
Splits polygon layer into equal parts.
#### NOTE
Doesn’t process multipolygons. You can first [transform Multipart to singleparts](https://toolbox.nextgis.com/t/qgis_multiparttosingleparts).
Inputs:
* Source file. Vector polygon layer in one of the formats, supported by GDAL, e.g. Shapefile in ZIP-archive, GeoJSON, GeoPackage.
* Number of parts. Specify, into how many parts source polygon should be split.
Output:
* Polygon GeoPackaged in a ZIP archive.
Launch the tool: [https://toolbox.nextgis.com/t/split_to_equal](https://toolbox.nextgis.com/t/split_to_equal)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# split_to_rect.html.md
# Split into rectangles and calculate their number
Splits polygon layer into equal rectangular parts and calculates number of rectangles. Layer can consist of several polygons, number of rectangles will be calculated for each of them.
Inputs:
* Shapefile - polygonal layer in ESRI Shapefile format, for which the number of rectangles will be calculated. Should be packed in ZIP-archive. Attributes should contain empty integer field, where the results of calculation will be recorded. Layer CRS must be use meters, EPSG:4326 is not suitable.
* Length of rectangle - longer side of rectangle, should be specified in meters.
* Width of rectangle - shorter side of rectangle, should be specified in meters.
* Field name - name of the string field in initial layer, where to write the number of calculated rectangles for each polygon.
* Percentage of not filled area – please, specify percentage. Percentage is calculated out of rectangle area and will be used to form a buffer around each rectangle.
Outputs:
* ZIP-archive with modified Shapefile, with a number of rectangles recorded in attribute table.
Launch the tool: [https://toolbox.nextgis.com/t/split_to_rect](https://toolbox.nextgis.com/t/split_to_rect)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# splitcomplex.html.md
# Split Complex Polygons
Splits polygons with too many vertices into smaller parts. Each part is a separate feature that keeps all the attributes of the split polygon.
Inputs:
* Source file - Vector layer in one of the formats supported by GDAL, e.g. GeoJSON, GeoPackage, zipped Shapefile.
* Max count of vertices - Maximum number of vertices allowed in a polygon. Default is 200000.
Outputs:
* GeoPackage file with split polygons.
Launch the tool: [https://toolbox.nextgis.com/t/splitcomplex](https://toolbox.nextgis.com/t/splitcomplex)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# spreadsheet2layer.html.md
# Google Sheets to Web GIS
Tool creates or updates point vector layer in NextGIS Web using Google Sheets.
Spreadsheet must be accessible for reading via shared link.
There are two ways to store coordinates for this tool:
1. Coumns ‘lat’ and ‘lon’, Coordinate reference system - WGS84.
2. Google maps links to locations.
Input:
* Web GIS link, example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com).
* Web GIS user login. User must have writing access.
* Web GIS User password.
* Vector layer ID to update. Leave blank to create new vector layer.
* Resource group ID. Specify the group to upload layer to. Use only if creating a new layer.
* Google Sheets ID (e.g. ‘1cKvjCMBZajaortAkdQqVwQ_06LuLm3bHyvybJgmAeQg’) or URL. This link should be accessible for data reading.
* Mode: by default the tool appends data to existing layer or creates a new layer (ADD mode); select REPLACE to overwrite an existing layer (ID specified above).
Output:
* Created/updated layer in Web GIS
Watch the video on [youtube](https://youtu.be/mEhUaRTFl3M).
Launch the tool: [https://toolbox.nextgis.com/t/spreadsheet2layer](https://toolbox.nextgis.com/t/spreadsheet2layer)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# styles.html.md
# How to create map styles for data visualization
Style is a special type of resource necessary to visualize geodata on [Web Map](webmap_create.md#ngcom-webmap-create) or with [WMS service](data_services.md#ngcom-wms-service) When displaying a data layer on a Web Map or publishing it using [WMS](../../glossary.md#term-WMS) protocol, you actually use its style which describes how geodata is visually presented on a map.
The only exception are [WMS layers](data_connect.md#ngcom-wms-layer) and [TMS layers](data_connect.md#ngcom-tms-layer) which don’t need you to create Styles, because the information about their visualization is passed to [Web GIS](description.md#ngcom-description) from the external server.
Web GIS supports several types of Styles.
* For [Vector](data_upload.md#ngcom-vector-layer) and [PostGIS](data_connect.md#ngcom-postgis-layer) layers you can create [MapServer style](#ngcom-mapserver-style) or [QGIS vector style](#ngcom-qgis-style).
* For [Raster layers](data_upload.md#ngcom-raster-layer) you can create [Raster style](#ngcom-raster-style) or [QGIS raster style](#ngcom-qgis-style).
To create a default QGIS style, just press the blue button on the resource page of the layer.

## QGIS style
1. Open the Properties page of the layer for which you want to create a style;
2. Press **Create resource** and select **QGIS style**;
3. In the opened dialog, Go to QGIS style tab and upload a file in [QML](../../glossary.md#term-QML) format created with [QGIS](../../glossary.md#term-QGIS);
4. Press **Create** button. If Style is created successfully, you’ll see its name in Child resources pane of the relevant layer.

You can type a custom name for the new style in the field Display name of the Resource tab.

Simple vector styles can be edited directly from NextGIS Web (more about it [here](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#editing-qgis-style)).
#### NOTE
For Vector layers uploaded to Web GIS with desktop app QGIS a QGIS style is created automatically.
## MapServer style
1. Open the Properties page of a [Vector layer](data_upload.md#ngcom-vector-layer) or [PostGIS layer](data_connect.md#ngcom-postgis-layer) for which you want to create a style;
2. Press **Create resource** and select **MapServer style**;
3. Press **Create** button. If Style is created successfully, you’ll see its name in the Child resources pane of the relevant Vector layer or PostGIS layer.

You can type a custom display name for the new style in the Resource tab and edit style parameters in the MapServer style tab.

Examples of [MapServer](../../glossary.md#term-MapServer) style can be found [here](https://docs.nextgis.com/docs_ngweb/source/mapservertemplates.html).
## Raster style
1. Open the Properties page of [Raster layer](data_upload.md#ngcom-raster-layer) for which you want to create a style;
2. Press **Create resource** and select **Raster style**;
3. Press **Create** button. If Style is created successfully, you’ll see its name in Child resources pane of the relevant Raster layer.
#### NOTE
For Raster layers uploaded to Web GIS with desktop app QGIS a Raster style is created automatically.

You can type a custom name for the new style in the field Display name of the Resource tab.

Read more on how to create and edit Styles [here](../../docs_ngweb/source/mapstyles.md#ngw-style-create).
# subscription.html.md
# Subscription
To view information on your subscription plan go to your [account](https://my.nextgis.com/subscription/).
In this section you can:
* Upgrade your plan, subscribe or renew subscription
* Change subscription plan
* Cancel subscription
## Upgrade subscription plan
New accounts are created on Free subscription plan. To access full functionality of the platform and get technical support you need to subscribe.
In the [Subscription](https://my.nextgis.com/subscription/) section of your account click on **Upgrade**.

On the next page choose how you wish to pay: monthly or annually. Pick the desired subscription plan and click “Select”. On the next step check your account information and selected subscription, enter a discount code if you have one, then press **Pay** to enter card details.

Follow the same steps to switch from Mini to Premium subscription.
## Cancel subscription
To cancel subscription, go to the [Subscription](https://my.nextgis.com/subscription/) section of your account and press **Cancel**.
On the next page you can read the conditions of the cancellation. After a subscription is cancelled, it continues to be active until the end of already payed period. During that time you can renew it. After the payed period ends, you’ll be switched to Free plan.
#### IMPORTANT
To keep access to your Web GIS after canceling the subscription, make sure that it fits the [Free plan](https://nextgis.com/pricing-base/#end-of-subscription) conditions. If by the time the payed period ends your Web GIS exceeds some limits, e.g. for the number of enabled users or storage space, or user permissions are set up, it will be blocked.

# swift_api.html.md
# API Documentation
# sys_req.html.md
# System requirements
To install NextGIS GeoServices On-Premise you need a physical or virtual server.
It is possible to use the same server where NextGIS Web and NextGIS ID are deployed, but to avoid conflict the server must not be used for other tasks (as file or mail server, PostGIS server etc).
#### NOTE
NextGIS team can perform the installation or upgrade remotely, if you provide remote access that fits the [requirements](https://docs.nextgis.com/docs_ngweb/source/remote.html).
## Minimum hardware requirements
Recommended configuration:
* CPU: 4-core
* RAM: 16 GiB
* Storage: 250 GB SSD
## Recommended OS
The server must have a Linux-based operational system allowing to install Docker Engine 23 and up, for example:
* Ubuntu LTS 24.04, 22.04, 20.04
* Debian 12, 11
* CentOS 9
# sys_req.html.md
# System requirements
To install NextGIS Toolbox On-Premise you need a physical or virtual server. Recommended configuration:
* CPU: 4-core
* RAM: 16 GiB
* Storage: 250 GB SSD
The server must have a Linux-based operational system allowing to install Docker Engine 23 and up, for example:
* Ubuntu LTS 24.04, 22.04, 20.04
* Debian 12, 11
* CentOS 9
It is possible to use the same server where NextGIS Web and NextGIS ID are deployed, but to avoid conflict the server must not be used for other tasks (as file or mail server, PostGIS server etc).
#### NOTE
NextGIS team can perform the installation or upgrade remotely, if you provide remote access that fits the [requirements](https://docs.nextgis.com/docs_ngweb/source/remote.html).
# sysadmin_updates.html.md
# Changelog
This section describes the latest changes to the software.
**3.3.0 released on 27 Jul 2026**
* Interactive webmap editing and configuration in display mode.
* New resource search page with advanced filtering capabilities.
* AI-powered generation of feature filters from natural language queries.
* Field configuration during vector layer creation.
* Vector layers now support boolean fields.
* Experimental support for JSON fields in vector layers.
* Limited support for marking vector layer fields as mandatory.
* Initial support for no-geometry layers.
* Support for using public S3 buckets with external raster layers.
* Enhanced raster layer preview with band configuration.
* Improved CSV import for lookup tables with preview and column mapping.
* Layer editing on webmaps enabled by default.
* HTTP API for importing feature descriptions from ZIP archives.
* Migrated from Webpack and Yarn to Rsbuild and pnpm.
* GDAL 3.8, Python 3.12, and Node.js 22 are now the minimum required versions.
**3.2.0 released on 21 Apr 2026**
* The Gallery resource: a new way to organize resources for end users.
* Support for feature filtering on webmaps and in the rendering HTTP API.
* S3-based storage for external raster layers with read/write support.
* Field value suggestions in feature layer filters.
* RAT attribute support for raster layer identification.
* Feature versioning enabled by default for new vector layers.
* Improved resource table and actions UI.
* Support for labels in user-defined SLD styles.
* Support for upscaling tileset layers.
* Automatic GeoTIFF compression predictor selection.
* JPEG compression enabled by default for RGB(A) raster layer pyramids.
* GPX export support for feature layers.
* Improved export performance for layers with many fields.
* Support for the Referer header in WMS and TMS client connections.
* Option to disable TLS certificate verification for WMS connections.
* Support for remote SRS in WMS client layers.
* Built-in SRS catalog based on the Proj database.
* Support for custom OnlineResource values in WMS client layers.
* TypeScript upgraded to 6.0.
* Ant Design upgraded to 6.2.
**3.1.0 released on 21 Jan 2026**
* Advanced feature table filtering capabilities.
* Viewing feature versioning history in the UI.
* Reverting versioned feature layers to previous states.
* Ability to create vector layers from existing layers and versions.
* Improved extent selector widget in webmap settings.
* Display total and filtered feature counts in feature tables.
* Dimmed out-of-scale-range layers in the tree on webmaps.
* Improvements to the printable webmap legend.
* Display measurement spatial reference system on webmaps.
* Transactional HTTP API for feature attachments and descriptions.
* Fixed PostGIS layer editing on webmaps.
* SQLAlchemy library upgraded to 2.0.
**3.0.0 released on 14 Oct 2025**
* Many new feature editing tools on webmaps.
* Improved swipe tool: vertical and horizontal swipes in any direction.
* Maximum webmap zoom level increased to 24.
* Geometry editing on feature pages.
* Geometry tab on feature pages.
* Zoom support for attachment preview.
* Automatic HEIF-to-JPEG conversion for feature attachments.
* Improved handling of image dimensions in descriptions.
* Improved WMS client compatibility and performance.
* Improved MVT generation performance.
* GeoPackage 1.4 compatibility improvements.
* Dropped support for GeoJSON response streaming.
* Dropped support for GeoJSON range requests.
* React library upgraded to 19.
**2.9.0 released on 23 Jun 2025**
* Identification of raster layers on webmaps.
* Improved webmap links, preserving legend symbols in URLs.
* Ability to configure panels and tools individually for each webmap.
* Refined resource picker behavior for single and multi-selection.
* Configurable lookup table item order, including manual ordering.
* Experimental adaptive layouts for webmaps on mobile and tablet devices.
* Initial experimental support for UI form designer.
* Handle rendering artifacts at tile boundaries for QGIS styles.
* Fix @map_scale variable and area calculations for QGIS styles.
* Support for dash patterns in user-defined styles.
* Support for adding fields to layers with versioning enabled.
* Creation of raster layers from ZIP archives and PAM support.
* Support for GDAL PAM georeferenced (.aux.xml) JPEG and PNG rasters.
* Configurable default basemaps for on-premises installations.
* Improved handling of date and bigint fields in UI and HTTP API.
* Improved handling of geom fields in feature layers.
* Clean up unreferenced file objects during maintenance by default.
* Python 3.10+ is now the minimum required version.
* OpenLayers library upgraded to 10.4.
* Support for adding specific Formbuilder forms to Collector projects.
* Support for using PostGIS layers as data sources in Collector projects.
* Export stops as waypoints in GPX files.
**2.8.2 released on 22 mar 2025**
* Fix NextGIS QGIS authentication.
**2.8.1 released on 6 Jun 2025**
* Fix layer symbols toggling.
**2.8.0 released on 05 Mar 2025**
* Webmap migrated to React with many new features.
* The identification panel enabled by default, replacing webmap popups.
* Resource editing interface fully migrated to React.
* New feature display page and modal dialog with vector tile geometries.
* Enhanced resource deletion confirmation with details of resources to delete.
* On-demand webmap legend symbol loading, optimizing webmap opening time.
* Configurable SSL mode for PostGIS connections.
* Handling of invalid geometries for MVT vector tiles.
* Better support for date and time fields in WFS clients.
* Expanded JSON output format capabilities in WMS services.
* Improved handling of fid fields in feature layers.
* Extended resource search HTTP API.
* Pre-calculated and cached style scale ranges for faster webmap opening.
* Chrome 118+, Safari 17+, Edge 116+, or Firefox 115+ is required.
* All legacy AMD modules migrated to TypeScript, and Dojo dependency removed.
* Experimental support for Python 3.10
* Improved track display with a distinguishable style.
* Fixed rounding of speed, direction, and HDOP in webmap popup.
**2.7.0 released on 06 October 2024**
* New resource creation dialog.
* Identification panel replaces popup on the webmap.
* Font management in the control panel.
* Preview layers with leaving the current page.
* Preview of the basemap on the resource editing page.
* Support for empty geometries when importing vector layers.
* Customizable web map title.
* WFS client component turned on by default.
* Data structure permission scope removed.
* TUS uploader is available using CORS.
* All of resource widgets migrated to Antd and React.
* Fix uploading of zero-length files.
**2.6.1 released on 20 Sep 2024**
* Fix audit journal display.
* Fix WMS service layer adding.
**2.6.0 released on 17 Jul 2024**
* Support for raster style legends.
* Customizable print layout including legend.
* Exclusive layer groups on webmaps.
* User-defined favorite resource pages.
* Measurement SRS configuration per-webmap.
* Experimental support for feature versioning.
* Better handling of incomplete geometry parts.
* Show feature attachment descriptions in the viewer.
* Extent information in PostGIS layer diagnostics.
* Transparent annotation polygons for better visibility.
* Switch to nearest neighbor resampling for raster pyramids.
* Experimental support for NULL geometries.
* Support for upper-case placeholders in TMS connections.
* Metadata permission scope and webmap display permission removed.
* Sentry client-side JavaScript integrations.
* Cache seeding and invalidation removed, use NextGIS Geoservices instead.
* Most of resource widgets migrated to Antd and React.
**2.5.2 released on 26 Jun 2024**
* Authorization fixes.
**2.5.1 released on 26 Arp 2024**
* Fix rendering of legend categories disabled by default.
**2.5.0 released on 04 Apr 2024**
* Turn legend categories on/off for a better experience on webmaps.
* Lots of customization options for embedded webmaps: map tools and panels.
* Ability to exclude feature layer fields from text search.
* Configurable permissions for groups, users, SRS and CORS management.
* Enhanced feature attachment viewer now includes panoramic images support.
* Ctrl+click opens feature attachment in a fixed tab.
* Ability to copy printing parameters as a URL for sharing.
* Support for custom SVG logos in addition to PNG.
* Add export to CSV and import from CSV for lookup tables.
* Support for multiple replicas and long-runnning requests.
* Update minimum required NodeJS version to 20.0.
* Fix permission dependencies on QGIS style parent resources.
* Copying QGIS styles from one to another.
**2.4.3 released on 02 Mar 2024**
* Expanded list of allowed CORS headers.
**2.4.2 released on 2 Feb 2024**
* Fix styles for WFS layers.
**2.4.1 released on 29 Dec 2023**
* Fix NextGIS ID configuration issue.
* Support for PostgreSQL 12.
**2.4.0 released on 28 Dec 2023**
* Support for lookup tables for feature layer attributes.
* Print to TIFF format in addition to PDF, JPEG and PNG.
* Geometry-based filtering of feature tables on webmaps.
* Autodetection of minimum and maximum scales for webmap and WMS layers.
* Refresh feature tables after saving layer changes on webmaps.
* Improved handling of `id` and `fid` attributes of vector layers.
* Improved handling of date and time inputs.
* Passing a zoom level to webmaps via `zoom` attribute.
* Support for OpenID Connect UserInfo endpoint.
* Extraction of scale ranges from QML styles.
**2.3.1 released on 17 Oct 2023**
* Fix layers visibility when printing a web map.
* Fix SLD marker preview size.
* Fix IP addresses adding to CORS settings.
**2.3.0 released on 28 Sep 2023**
* New tileset resource for storing and serving prerendered tiles.
* New OGC API Features service with read and write support.
* Up to 2x speed-up of loading vector layer data.
* Differentiate webmap intial and contstraining extents.
* Support for Google Analytics metrics.
* Support for basic user-defined styles.
* Save to PDF from the webmap printing panel.
* Check effective permissions of other users for a resource.
* Legends for webmaps is enabled by default.
* Lots of improvements in feature editing widgets.
* OutputFormat declaration in WFS for better compatibility.
* Store audit journal in PostgreSQL database instead of ElasticSearch.
* React library upgraded to 18.
* Ant Design library upgraded to 5.
**2.2.0 released on 30 Jun 2023**
* Auto-generated and configurable legends for webmaps.
* Reordering layers via drag-and-drop while viewing webmaps.
* Changing layer opacity while viewing webmaps.
* Creation of an empty vector layer without uploading a file.
* Ability to replace existing vector layer features and fields from a file.
* Brand-new feature table based on React.
* Resource and feature description editors updated to CKEditor 5.
* Improved handling of resource descriptions on webmaps.
* Zoom to a filtered set of features on webmaps.
* Geometry properties in the identification popup.
* Show the cursor location and the current extent on webmaps.
* Zoom to all layers on webmaps.
* Support for linear and polygonal annotations.
* Default display names for resources during creation.
* Deletion of all features and changing geometry type for vector layers.
* Limit by extent while exporting feature layers.
* Ability to export a filtered set of features.
* MapInfo formats support when creating a vector layer.
* TMS client: parallel fetching of tiles and HTTP/2.
* Reasonable resource tabs ordering and auto-activation.
* Improved usability of the layers tree on webmaps.
* Fast PNG compression for rendering.
* Chrome 102+, Safari 15+, Edge 109+ or Firefox 102+ is required.
* User permissions section is moved to a separate page.
* OAuth-based automatic group assignment.
**2.1.3 released on 17 Mar 2023**
* Fix Collector issues.
**2.1.2 released on 1 Jul 2023**
* Fix feature attachment download issues.
**2.1.1 released on 23 Nov 2022**
* Fix resource group selection issue while cloning webmaps
**2.1.0 released on 21 Nov 2022**
* Support for webmap cloning via UI.
* Search by coordinates on web maps.
* CSV and XLSX support when creating a vector layer.
* Export and import feature layer attachments.
* Vector layer export to KML and KMZ formats.
* Fields selection while exporting feature layer.
* Assign default groups while creating users via UI.
* Experimental support for authorization links.
* Use resource SRS by default while exporting raster and vector layers.
* Support for booleans and nulls in resource metadata.
* Support for fixed length `character` columns in PostGIS layers.
* Support for materialized views and 25D geometries in PostGIS layers.
* Ability to turn off user password and keep only OAuth authentication.
* Check for disk free space in the healthcheck.
* Ability to search through resources recursively in REST API.
* OpenLayers library upgraded to 6.15.1.
**2.0.0 released on 18 Jul 2022**
* “Locate me” tool on web maps.
* Identifiable setting for web map layers.
* Batch deletion and moving of resources.
* Ability to download raster layers as an internal representation.
* PostGIS connection and layer diagnostic tool.
* Support for quad-key basemaps on web maps.
* OAuth improvements: NextGIS ID integration, simultaneous authorization code and password grant types.
* Improved management of spatial reference systems and catalog integration.
* Better support for 25D geometries on web maps and PostGIS layers.
* Improved handling of URLs in descriptions and feature layer fields.
* Cloud-optimized GeoTIFF (COG) enabled by default.
* In-place conversion between COG and non-COG rasters.
* Hide empty groups and groups with no accessible layers on web maps.
* M dimension stripping while creating vector layers in LOSSY mode.
* Selecting features on web maps via `hl_*` URL parameters.
* Ability to inject some HTML into the base template for metrics and counters.
* Fast JSON serialization and deserialization based on orjson library.
* Completed control panel migration to Antd and React.
**1.9.0 released on 16 Feb 2022**
* Cloud-optimized GeoTIFF (COG) support for raster layers.
* Browser compatibility test and Internet Explorer deprecation.
* Experimental support for long-runnning requests for raster and vector layers creation using `lunkwill` extension.
* Private annotations on web maps, visible only for authors.
* Wrapping around the dateline for tile-based layers on web maps.
* A lot of improvements for the control panel: filters, batch operations, etc.
* Improved handling of vector layer sources with `id` and `geom` fields.
* Reprojection into different coordinate systems in WMS and WFS services.
* Export feature layer using field display names (aliases) instead of keynames.
* Support for CORS domain wildcards (like `https://*.csb.app`).
* WFS client and server simple filters support.
* Improved handling of coordinates outside boundaries of coordinate systems.
* Support for 25D geometries in PostGIS layers.
* Ability to filter NULL values in feature REST API.
* Unknown fields in REST API filters return an error.
* Improved handling of external services errors and timeouts.
* Upgraded dependencies: Pyramid 2.0, SQLAlchemy 1.4, and OpenLayers 6.10.
**1.8.0 released on 18 Nov 2021**
* Source layer selection while creating vector layers from multi-layer sources, such as ZIP-archives or Mapinfo TABs.
* On-the-fly reprojection for WMS and WFS services.
* Ability to restrict address search by a country if using Nominatim.
* Hide inaccessible layers while displaying webmaps.
* Highlight feature when selecting from search results.
* Display emails as active mailto: links in the webmap popup.
* Ability to delete users and groups from the control panel.
* Ability to change resource owner in UI and REST API.
* Automatic generation of keynames for WMS and WFS services.
* Improved support for Unicode field names for WFS services.
* Granular control setting for resource export availability.
* ISO-8601 date and time formatting in feature layer REST API via dt_format=iso option.
* Drop Python 2.7 support, NextGIS Web now requires Python 3.8+.
* PostgreSQL 10+, PostGIS 2.5+ and GDAL 3.0+ are required now.
* Synchronization of translations with POEditor.
* Yandex Maps-based address search on the webmap.
**1.7.3 released on 8 Oct 2021**
* Fix vector layer loading with error feature skip.
* Fix exception handling of tile cache writing.
**1.7.2 released on 1 Oct 2021**
* Use SameSite=None for the session cookie to support iframe authentication.
**1.7.1 released on 25 Aug 2021**
* Fix MapServer Python 3 compability issue.
* Fix critical Webpack compability error.
**1.7.0 released on 11 Aug 2021**
* Simple tool for previewing resources on the map.
* Resource quick search tool in the page header.
* Disable/enable address search via settings in the control panel.
* Ability to constraint address search area by web map initial extent.
* Zoom to a better extent from address search and bookmark panel.
* Language autodetection, per-user language setting, and support for the external translation files.
* Automatic downsampling of a social preview image to 1600x630 pixels.
* Better support for KML: LIBKML GDAL driver is used when available.
* Filtering features by ID in feature REST API.
* Layers with an “id” field can be loaded if the field has an int32 type.
* Information about available distribution versions in the control panel.
* Experimental storage accounting and estimation subsystem.
**1.6.0 released on 12 May 2021**
* Ability to constraint a web map to the default extent.
* More length and area units in web map settings.
* Automatic correction of errors during the creation of a vector layer.
* Support for creation of vector layers from GML and KML files.
* User login is case insensitive when logging in.
* Configuration option for disabling social networks sharing buttons.
* Performance improvements in geometry handling and rendering, especially when converting between WKT and WKB formats.
* Performance improvements in tile cache component.
* Improved word wrapping in web map identification popup.
* Minimum and maximum scale restrictions in WMS server.
* Experimental integration of modern JavaScript and Webpack.
* Quota for the maximum number of enabled users.
* OpenLayers library upgraded to 6.5.0.
* OAuth server logout support via logout redirect endpoint.
**1.5.0 released on 14 Feb 2021**
* Add database migrations framework and automatic migrations applying.
* External access links for styles, web maps (TMS), and feature layers (MVT).
* Experimental WFS client and raster mosaic, which is disabled by default.
* Add support of 1.1.0 version in WFS server implementation.
* Improved handling of NODATA values in raster layer and raster style.
* Compression level of PNG images is set to 3, which is much faster.
* Performance improvements and better concurrency for tile cache.
* New “CSV for Microsoft Excel” export format for better Excel compatibility.
* Fix infinite wait of database lock, including during vector layer deletion.
* Improved handling of invalid JSON bodies in RESP API, now the correct error message is returned.
* Vector layer export to MapInfo MIF/MID format.
* Vector layer export to Panorama SXF format.
# table2geo.html.md
# Table to vector file
The tool converts spreadsheet file (XLSX, ODS, CSV) to a vector file in a format of your choice.
Input:
* Spreadsheet file in ODS, XSLX or CSV format. Spreadsheet must be located on the first page (if input file format implies books) and contain fields named `lat` and `lon` for latitude and longitude, respectively. Coordinate reference system - WGS84. Coordinates should be expressed as decimal degrees.
* Optional: format of an output vector file. Choose one from the list:
> - ESRI Shapefile
> - GeoPackage
> - GeoJSON
> - TAB
> - MIF
> - SQL
> - CSV
* Optional: field type - list of field types for an output vector file, which correspond to the columns from initial spreadsheet. Should be specified without quotes and be comma separated. Possible types: `Integer, Real, String, Date (YYYY-MM-DD), Time (HH:MM:SS), DateTime (YYYY-MM-DD HH:MM:SS)`. Example: `Integer,Real,Real,String,String,String`.
Output:
* ZIP-archive with vector file. You can import this file into NextGIS QGIS or NextGIS Web without unpacking.
Launch the tool: [https://toolbox.nextgis.com/t/table2geo](https://toolbox.nextgis.com/t/table2geo)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# tableau.html.md
# How to load layer into Tableau
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoPackage (QGIS) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Launch Tableau, select “Connect” > “Spatial file” and choose the target layer in pop-up window.

* Data is opened in “Data Source” tab, switch to the worksheet tab (“Sheet 1”).

* In the “Data” panel find “Geometry” field and drag it onto the workspace.

* Layer is loaded into Tableau.

# teams.html.md
# Team
Users added to a team get access to the team owner’s Web GIS and Premium functionality even without having a Premium subscription.
To create your own team, you need to be on [Premium](http://nextgis.com/nextgis-com/plans).
User who have “Free” subscription plan cannot become team owners, but can be [added as team members](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management) by a user that has Premium subscription.
Information on your team and the teams you are a member of is available in your account.
## Team information
In the “Teams” section of your profile there are two tabs. In the “Owner” tab you can see the list of NextGIS users added to your team, if you have one. On the “Member” tab you can see the teams you participate in.

In the teams list you can find a link to the owner’s Web GIS that you can access as a team member.
In this section you can manage [your team](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management) and your [participation on other teams](https://docs.nextgis.com/docs_ngcom/source/teams.html#team-memberships).
## Manage your team
#### WARNING
To create your own team, you need to be on [Premium](http://nextgis.com/nextgis-com/plans). Only the team owner can add and delete team members.
According to nextgis.com plans, the Premium account holder has an opportunity to give access to Premium-functions to 4 more users who have a NextGIS ID by adding them to the team.
To mange your team, go to your account and select Teams - Owner: [https://my.nextgis.com/teammanage/owner](https://my.nextgis.com/teammanage/owner).
### Invite user to your team
By default, the team includes the owner of the Premium subscription (see [Fig. 16.](#first-administrator)). To add other users to your team click **Add**.

Enter an email address and click **Send invitation**.

The user receives the invitation to this email address. If the email is not yet associated with a NextGIS ID, the user needs to [sign up](https://docs.nextgis.com/docs_ngcom/source/create.html). If a NextGIS ID is already created, the user can just go to their account and accept the invitation in [Teams - Member](https://docs.nextgis.ru/docs_ngcom/source/teams.html#team-memberships).
Team owner can check the status of the invitations in the account. Pending invitations can be cancelled.

Once the invitation is accepted, the user is moved to the list of team members (see [Fig. 19.](#all-users)).

If you wish to let user access your Web GIS, set up [permissions](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-auth-id-webgis).
If adding new users is unavailable, it means that you’ve reached the limit of users for your subscription plan. Both team members and pending invitations are counted towards the limit.
You can increase the size of your team. To do so, email us at [sales@nextgis.com](mailto:sales@nextgis.com).
To free a slot in your team, you can cancel a pending invitation or delete one of the team members.

### Delete user from team
You can delete users from your team at any moment. To delete a user, click **Remove** and confirm the user removal.

When you remove a user from your team it doesn’t delete them from Web GIS, instead the Web GIS user is deactivated. Administrators still have access to the resources owned by the deactivated user and the history of their activity in versioning logs.
## Allow team members to access Web GIS
By default a new Web GIS user has no permissions and cannot view any resources.
To allow new users to immediately start working in your Web GIS, set up permissions for them in advance:
* The best way is to set up permissions for a [user group](https://docs.nextgis.com/docs_ngweb/source/users.html#create-new-user-group) with the option “New users” enabled. Users will be included in this group upon their first login to the Web GIS.
* An alternative way is to set up permissions for the principal [“Authenticated”](https://docs.nextgis.com/docs_ngcom/source/permissions.html#ngcom-permissions-usertypes).
## Team memberships
On the Member tab you can see the list of teams you joined and the received invitations awaiting your decision. Here you can:
* open Web GIS of the team owner by clicking on the link;
* accept invitation and join a team or decline an invitation. A blue circle means that you have incoming invitations;

* leave a team you’re currently a member of.
To leave a team, click **Leave team**.

# temporal_split.html.md
# Create temporal cache
The tool creates several layers from one. Each new layer is a selection of features for a period of time.
Inputs:
* Web GIS URL, example: [https://demo.nextgis.com](https://demo.nextgis.com);
* Input resource ID - numbers at the end of the URL of the input layer;
* Date the feature disappeared - field containing the date when the feature stopped existing;
* Date the feature appeared - field containing the date when the feature started existing;
* The start year of the interval - name for the ‘year1’ field (the field will be created);
* The end year of the interval - name for the ‘year2’ field (the field will be created);
* Output format - enter one of the following: `GeoJSON, GPKG, CSV, ESRI Shapefile`. ESRI Shapefile is the default;
* Ignore errors - Leave empty to **stop execution** if an empty time slice is found. Enter 1 to **ignore** time slices with no features (ignore errors).
Outputs:
* ZIP archive of layers, each also in an archive.
Launch the tool: [https://toolbox.nextgis.com/t/temporal_split](https://toolbox.nextgis.com/t/temporal_split)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# terrain_analysis.html.md
# Comprehensive Terrain Analysis
Complete geomorphological analysis of a DEM: morphometry, hydrology, terrain indices, classifications, and statistics. Produces a ZIP package with rasters, vectors, CSVs, and a JSON manifest.
Inputs:
* DEM Package (ZIP). ZIP file from [Search & download Planetary Computer](https://toolbox.nextgis.com/t/planetary_search?from-related-tools=1) containing a DEM GeoTIFF and manifest.json
* Contour Interval (m). Elevation interval for contour lines in meters (default: 10)
* Major Contour Interval (m). Elevation interval for major contour lines in meters (default: 50)
* Watershed Threshold (cells). Minimum number of cells for watershed delineation (default: 500)
* TPI Small Radius (cells). Neighborhood radius for small-scale TPI in cells (default: 5)
* TPI Large Radius (cells). Neighborhood radius for large-scale TPI in cells (default: 25)
Outputs:
* Terrain Analysis Package (ZIP). ZIP archive with rasters, vectors, statistics, and manifest
* Summary. Human-readable summary of the terrain analysis results
* Manifest JSON. JSON manifest string describing all outputs
Launch the tool: [https://toolbox.nextgis.com/t/terrain_analysis](https://toolbox.nextgis.com/t/terrain_analysis)
Example:

The output of this tool can be used in other tools:
* [Flood Susceptibility Analysis](https://toolbox.nextgis.com/t/flood_analysis?from-related-tools=1)
* [Erosion Susceptibility Analysis](https://toolbox.nextgis.com/t/erosion_analysis?from-related-tools=1)
* [Landslide Susceptibility Analysis](https://toolbox.nextgis.com/t/landslide_analysis?from-related-tools=1)
* [Wildfire Susceptibility Analysis (Topographic)](https://toolbox.nextgis.com/t/wildfire_analysis?from-related-tools=1)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
#### SEE ALSO
* [Search & download Planetary Computer](https://toolbox.nextgis.com/t/planetary_search?from-related-tools=1)
* [Download Sentinel-2 satellite data](https://toolbox.nextgis.com/t/download_and_prepare_l8_s2?from-related-tools=1)
* [Search and save Sentinel-2 scene previews](https://toolbox.nextgis.com/t/s2_search?from-related-tools=1)
* [Image clustering](https://toolbox.nextgis.com/t/image_clustering?from-related-tools=1)
# test.html.md
# Testing framework
NextGIS Web testing framework is based on [pytest](https://pytest.org) library
with some additions (predefined fixtures, marks) and conventions. It supports
unit and functional tests.
## File layout
Each NextGIS Web component have its own set of tests located inside `test`
directory. Consider the directory structure on the example for package
`package` and component `component`.
```default
🗁 # Repository root directory
├── 🗁 package # Package source root
│ ├── 🗁 component # Component root directory
│ │ ├── 🗁 test # Test root directory
│ │ │ ├── 🗀 data # Test data directory
│ │ │ ├── 🗎 __init__.py # Dummy __init__ module
│ │ │ └── 🗎 test_*.py # Test module files
│ │ └── 🗎 __init__.py # And other component files
│ └── 🗎 __init__.py # Package files and other components
└── 🗎 setup.py # Setuptools configuration file
```
## Unit tests
Unit tests are designed for testing modules and usually don’t require additional
configuration. Refer [pytest documentation](https://docs.pytest.org/en/latest/contents.html) and [Writing tests]()
section.
```python
# package/component/test/test_unit.py
from .. import some_function
def test_some_function():
assert some_function(1) == 0
```
## Functional tests
Functional tests operate on data, and NextGIS Web must be configured and have
the database initialized via `nextgisweb initialize_db`. Some tests modify
data, so don’t run these tests in a production environment.
### Server-side
Server-side tests are executed in the same context as other NextGIS Web console
scripts. The environment can be loaded with `ngw_env` fixture, which
initializes components and the environment.
```python
# package/component/test/test_env.py
def test_component(ngw_env):
ngw_env.component.some_component_method()
```
Tests inside a transaction can be performed using `ngw_txn` fixture. It begins
a new transaction and rollbacks it at exit, flushing changes to the database
before that.
```python
# package/component/test/test_txn.py
from ..model import SomeModel
def test_transaction(ngw_txn):
SomeModel(field='value').persist() # Dummy record insert
```
### Web application
For testing via HTTP requests fixture `ngw_webtest_app` can be used. It’s
represents [WebTest](https://docs.pylonsproject.org/projects/webtest/en/latest/index.html)
[TestApp](https://docs.pylonsproject.org/projects/webtest/en/latest/api.html)
instance which can be used for doing requests.
```python
# package/component/test/test_webapp.py
def test_api_method(ngw_webtest_app):
ngw_webtest_app.get('/api/component/component/method')
```
## Writing tests
### Naming conventions
Follow pytest default naming conventions - test modules and functions must have
`test_` prefix.
#### NOTE
Do not forget to add a dummy `__init__.py` file to the `test` directory.
## Running tests
```shell
$ export NEXTGISWEB_CONFIG=path/to/config.ini
$ python -m pytest package # All tests from package
$ python -m pytest package/component # Only tests from component
$ python -m pytest --pyargs package.component # Same but by Python module name
```
#### NOTE
The last option with `--pyargs` might be useful when running tests in Crater
/ NGWDocker environment. Path-based options won’t work because of symlinks
inside `site-packages` directory.
# tiles2ngw_en.html.md
# How to upload Tileset to NextGIS Web
* [Order data](https://data.nextgis.com/?next-product=tiles) for your area of interest in PNG format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* [Create your Web GIS](https://docs.nextgis.com/docs_ngcom/source/create_webgis.html) or [sign in to it](https://docs.nextgis.com/docs_ngcom/source/create_webgis.html#how-to-sign-in-to-your-web-gis).
* To add a **Tileset**, select a Tileset in the “Create Resource” block of operations.

Next, you need to enter the name of the tileset, which will be displayed in the administrative web interface.
The “Key” field is optional. On the appropriate tabs, you can add a resource description and metadata. Typically, metadata is used to develop third-party applications using APIs.
In the “Tileset” tab, you need to upload a tileset in a zip archive. Tiles must be in PNG or JPEG format and have a size of 256x256 pixels.

Click **Create** to complete the process.
# toc.html.md
# Developer documentation
Contents:
* [NextGIS Web for developers](docs_ngweb_dev/doc/toc.md)
* [NextGIS Web REST API](docs_ngweb_dev/doc/developer/toc.md)
* [NextGIS Web internals](docs_ngweb_dev/doc/internal/toc.md)
* [NextGIS Web administrator’s guide](docs_ngweb_dev/doc/admin/toc.md)
* [NextGIS Mobile for developers](ngmobile_dev/source/toc.md)
* [NextGIS iOS SDK](ngmobile_dev/source/ngmiv3.md)
* [NextGIS Android SDK](ngmobile_dev/source/ngmav3.md)
* [NextGIS QMS Service API](qms_srv_dev/doc/api.md)
* [API Root](qms_srv_dev/doc/api.md#api-root)
* [Geo Service List](qms_srv_dev/doc/api.md#geo-service-list)
* [Geo Service filtered list](qms_srv_dev/doc/api.md#geo-service-filtered-list)
* [Geo Service Details](qms_srv_dev/doc/api.md#geo-service-details)
* [Geo Service Icon](qms_srv_dev/doc/api.md#geo-service-icon)
* [NextGIS Formbuilder for developers](docs_formbuilder_dev/doc/toc.md)
* [General](docs_formbuilder_dev/doc/form_syntax.md)
* [Syntax](docs_formbuilder_dev/doc/form_syntax.md#syntax)
* [Elements](docs_formbuilder_dev/doc/form_syntax.md#elements)
* [General](docs_formbuilder_dev/doc/meta_syntax.md)
* [Syntax](docs_formbuilder_dev/doc/meta_syntax.md#syntax)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Collector](https://docs.nextgis.com/docs_collector/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Data](https://docs.nextgis.com/docs_data/source/index.html)
# toc.html.md
# NextGIS Formbuilder for developers
* [General](form_syntax.md)
* [Syntax](form_syntax.md#syntax)
* [Elements](form_syntax.md#elements)
* [Checkbox](form_syntax.md#checkbox)
* [Combobox](form_syntax.md#combobox)
* [Coordinates](form_syntax.md#coordinates)
* [Counter](form_syntax.md#counter)
* [Date & Time](form_syntax.md#date-time)
* [Distance meter](form_syntax.md#distance-meter)
* [Double combobox](form_syntax.md#double-combobox)
* [Label](form_syntax.md#label)
* [Photo](form_syntax.md#photo)
* [Radiogroup](form_syntax.md#radiogroup)
* [Signature](form_syntax.md#signature)
* [Space](form_syntax.md#space)
* [Splitted combobox](form_syntax.md#splitted-combobox)
* [Tabs](form_syntax.md#tabs)
* [Text edit](form_syntax.md#text-edit)
* [General](meta_syntax.md)
* [Syntax](meta_syntax.md#syntax)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS GeoServices on-premise](https://docs.nextgis.com/docs_geoserv_prem/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS GeoServices](https://docs.nextgis.com/docs_geoservices/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[Get Started with NextGIS](https://docs.nextgis.com/docs_ngcom/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Connect for QGIS](https://docs.nextgis.com/docs_ngconnect/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS ID](https://docs.nextgis.com/docs_ngid/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Mobile](https://docs.nextgis.com/docs_ngmobile/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS QGIS](https://docs.nextgis.com/docs_ngqgis/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Tracker](https://docs.nextgis.com/docs_ngtracker/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Web](https://docs.nextgis.com/docs_ngweb/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Web 3D](https://docs.nextgis.com/docs_ngweb_3D/source/index.html)
# toc.html.md
# NextGIS Web for developers
* [NextGIS Web REST API](developer/toc.md)
* [Authorization](developer/auth.md)
* [Managing users](developer/auth.md#managing-users)
* [Managing groups](developer/auth.md#managing-groups)
* [Automatically creating users](developer/auth.md#automatically-creating-users)
* [Get resource permissions](developer/auth.md#get-resource-permissions)
* [Resources](developer/resource.md)
* [Create resource](developer/create.md)
* [File upload](developer/file_upload.md)
* [Editing](developer/change.md)
* [Miscellaneous](developer/misc.md)
* [Error reporting](developer/error_report.md)
* [Vector layer data types](developer/vector_data_types.md)
* [Python API library](developer/python_api.md)
* [ogr2ogr](developer/ogr2ogr.md)
* [NextGIS Web internals](internal/toc.md)
* [Components and environment](internal/component.md)
* [Modern JavaScript](internal/jsrealm.md)
* [Long-running API requests](internal/lunkwill.md)
* [Internationalization and localization](internal/i18n.md)
* [Testing framework](internal/test.md)
* [Package versioning](internal/versioning.md)
* [Database migrations](internal/migration.md)
* [URLs and routes](internal/url_route.md)
* [Describing API](internal/apitype.md)
* [Code formatting](internal/code_formatting.md)
* [NextGIS Web administrator’s guide](admin/toc.md)
* [Installation](admin/install.md)
* [Configuration](admin/configure.md)
* [Backup and restore](admin/backup_restore.md)
* [Upgrade](admin/upgrade.md)
# toc.html.md
# NextGIS Web administrator’s guide
* [Installation](install.md)
* [System requirements](install.md#system-requirements)
* [Installation process](install.md#installation-process)
* [uWSGI](install.md#uwsgi)
* [Systemd](install.md#systemd)
* [Configuration](configure.md)
* [Cofiguration files](configure.md#cofiguration-files)
* [Environment variables](configure.md#environment-variables)
* [Backup and restore](backup_restore.md)
* [Backup](backup_restore.md#backup)
* [Restore](backup_restore.md#restore)
* [Upgrade](upgrade.md)
* [Stopping services and creating backup](upgrade.md#stopping-services-and-creating-backup)
* [Upgrading packages](upgrade.md#upgrading-packages)
* [Applying migrations](upgrade.md#applying-migrations)
* [Upgrading from 3.7.0 or higher](upgrade.md#upgrading-from-3-7-0-or-higher)
* [Upgrading from previous versions](upgrade.md#upgrading-from-previous-versions)
* [Starting services](upgrade.md#starting-services)
* [Upgrading PostgreSQL and PostGIS](upgrade.md#upgrading-postgresql-and-postgis)
# toc.html.md
# NextGIS Web REST API
* [Authorization](auth.md)
* [Managing users](auth.md#managing-users)
* [Managing groups](auth.md#managing-groups)
* [Automatically creating users](auth.md#automatically-creating-users)
* [Get resource permissions](auth.md#get-resource-permissions)
* [Simple output](auth.md#simple-output)
* [Detailed output](auth.md#detailed-output)
* [Resources](resource.md)
* [Resource classes](resource.md#resource-classes)
* [HTTP API](resource.md#http-api)
* [Create resource](create.md)
* [Resource group](create.md#resource-group)
* [PostGIS Connection](create.md#postgis-connection)
* [PostGIS Layer](create.md#postgis-layer)
* [Empty vector layer](create.md#empty-vector-layer)
* [Vector layer with data](create.md#vector-layer-with-data)
* [Feature in vector or PostGIS layer](create.md#feature-in-vector-or-postgis-layer)
* [Add attachment to feature](create.md#add-attachment-to-feature)
* [Batch create features in vector layer](create.md#batch-create-features-in-vector-layer)
* [Raster layer](create.md#raster-layer)
* [File bucket](create.md#file-bucket)
* [Mapserver style](create.md#mapserver-style)
* [QGIS style](create.md#qgis-style)
* [Raster style](create.md#raster-style)
* [Lookup table](create.md#lookup-table)
* [Web map](create.md#web-map)
* [WMS Service](create.md#wms-service)
* [WMS Connection](create.md#wms-connection)
* [WMS Layer](create.md#wms-layer)
* [Tracker](create.md#tracker)
* [File upload](file_upload.md)
* [Single file upload](file_upload.md#single-file-upload)
* [Multiple file upload](file_upload.md#multiple-file-upload)
* [Editing](change.md)
* [Change resource](change.md#change-resource)
* [Change webmap](change.md#change-webmap)
* [Change metadata](change.md#change-metadata)
* [Change file bucket resource](change.md#change-file-bucket-resource)
* [Change lookup table resource](change.md#change-lookup-table-resource)
* [Change feature](change.md#change-feature)
* [Change attachment](change.md#change-attachment)
* [Delete feature](change.md#delete-feature)
* [Delete features](change.md#delete-features)
* [Delete all features](change.md#delete-all-features)
* [Delete attachment](change.md#delete-attachment)
* [Delete all attachments](change.md#delete-all-attachments)
* [Miscellaneous](misc.md)
* [Get resource data](misc.md#get-resource-data)
* [Identify by polygon](misc.md#identify-by-polygon)
* [Error reporting](error_report.md)
* [Vector layer data types](vector_data_types.md)
* [Python API library](python_api.md)
* [ogr2ogr](ogr2ogr.md)
# toc.html.md
# NextGIS Web internals
* [Components and environment](component.md)
* [Dependencies between components](component.md#dependencies-between-components)
* [Global env object](component.md#global-env-object)
* [Component class](component.md#component-class)
* [Env class](component.md#env-class)
* [Modern JavaScript](jsrealm.md)
* [Setup and directory layout](jsrealm.md#setup-and-directory-layout)
* [Working with packages](jsrealm.md#working-with-packages)
* [Webpack modules](jsrealm.md#webpack-modules)
* [Writing modules](jsrealm.md#writing-modules)
* [Long-running API requests](lunkwill.md)
* [Internationalization and localization](i18n.md)
* [Server side](i18n.md#server-side)
* [Client side](i18n.md#client-side)
* [Testing framework](test.md)
* [File layout](test.md#file-layout)
* [Unit tests](test.md#unit-tests)
* [Functional tests](test.md#functional-tests)
* [Writing tests](test.md#writing-tests)
* [Running tests](test.md#running-tests)
* [Package versioning](versioning.md)
* [Package configuration](versioning.md#package-configuration)
* [Development versions](versioning.md#development-versions)
* [Release versions](versioning.md#release-versions)
* [Backports and patches](versioning.md#backports-and-patches)
* [Database migrations](migration.md)
* [Existing components](migration.md#existing-components)
* [New components](migration.md#new-components)
* [Python migrations](migration.md#python-migrations)
* [URLs and routes](url_route.md)
* [URLs](url_route.md#urls)
* [Route names](url_route.md#route-names)
* [Describing API](apitype.md)
* [Path parameters](apitype.md#path-parameters)
* [Query parameters](apitype.md#query-parameters)
* [Request body](apitype.md#request-body)
* [Response](apitype.md#response)
* [Code formatting](code_formatting.md)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Toolbox](https://docs.nextgis.com/docs_toolbox/source/index.html)
# toc.html.md
#### IMPORTANT
Table of contents is moved here:
[NextGIS Toolbox on-premise](https://docs.nextgis.com/docs_toolbox_prem/source/index.html)
# toc.html.md
# NextGIS Mobile for developers
* [NextGIS iOS SDK](ngmiv3.md)
* [Intro](ngmiv3.md#intro)
* [Install](ngmiv3.md#install)
* [Add to project](ngmiv3.md#add-to-project)
* [SDK API References](ngmiv3.md#sdk-api-references)
* [Demo projects](ngmiv3.md#demo-projects)
* [NextGIS Android SDK](ngmav3.md)
* [Intro](ngmav3.md#intro)
* [Install](ngmav3.md#install)
* [Add to project](ngmav3.md#add-to-project)
* [Add map](ngmav3.md#add-map)
* [Create feature class](ngmav3.md#create-feature-class)
* [Load feature class to datastore](ngmav3.md#load-feature-class-to-datastore)
* [Create raster](ngmav3.md#create-raster)
* [Add layer to a map with style](ngmav3.md#add-layer-to-a-map-with-style)
* [SDK API References](ngmav3.md#sdk-api-references)
* [Demo projects](ngmav3.md#demo-projects)
# toolbox.html.md
# NextGIS Toolbox
This plugin allows to access the NextGIS tools collection, also available [online](https://toolbox.nextgis.com), directly from QGIS.
To install the plugin, go to Plugins -> Manage and install plugins. Type “NextGIS Toolbox” and click **Install**. After installation you’ll need to restart QGIS.
NextGIS Toolbox is available in the Processing panel as well as the Processing menu.
To use the tools you need to add your API key in the plugin settings.
## API key
Go to [https://toolbox.nextgis.com](https://toolbox.nextgis.com) and log in or [create NextGIS ID account](https://docs.nextgis.com/docs_ngcom/source/create.html#how-to-create-account-nextgis-id).
Open any tool on the front page of the [Toolbox](https://toolbox.nextgis.com) web site.
Go to the **Python-code** tab.
Your API key is indicated in the following section:
```default
# Initialize client with your API key, use default base url
toolbox = ToolboxClient("{API_key}")
```

Copy the key from the code and insert it in the plugin settings in QGIS: Processing -> NextGIS Toolbox -> Settings.

# tools.html.md
# Tools
* [Add region and settlement names to attributes](add_regions.md)
* [Adobe Illustrator (\*.ai) to geodata](ai2geo.md)
* [Aggregate raster layer to H3 grid](aggregate_raster_layer_to_h3.md)
* [Aggregate vector layer to H3 grid](aggregate_vector_layer_to_h3.md)
* [Layer list from DWG file](autocad_file_schema.md)
* [Report DWG / DXF file version](autocad_version.md)
* [ASCII raster to GeoTIFF](ascii2geotiff.md)
* [Buffer](buffer.md)
* [Central lines of polygons](centerline.md)
* [Points inside polygons](centroid2attr.md)
* [Check geometries](check_geometries.md)
* [Calculate areas of intersection](clip_polys_poly.md)
* [Convert format of vector layer](convert.md)
* [Reproject coordinates](coord_recalc.md)
* [Coordinates to polygon](coords2poly.md)
* [Count TMS tiles for polygon](count_tiles.md)
* [Count number of layer intersections](crossing_borders.md)
* [Extract elevations from DEM](deminpoints.md)
* [DOC(X) to PDF](doc2pdf.md)
* [Prepare and download Sentinel-2 data](download_and_prepare_l8_s2.md)
* [Download Landsat Analysis Ready Data (GLAD ARD)](download_glad.md)
* [Embed SVG into QGS/QML](embedsvg.md)
* [Empty geometries in Web GIS layer](empty_geoms.md)
* [Erase overlapping areas from layer](eraser.md)
* [Erosion Susceptibility Analysis](erosion_analysis.md)
* [Photos with EXIF to NGW layer](exif2resource.md)
* [Change attributes in layer group](field_value_changer.md)
* [Fix geometries](fix_geometries.md)
* [Strip ZM from vector layer](flatten.md)
* [Flood Susceptibility Analysis](flood_analysis.md)
* [GBIF species observations to geodata](gbif_download.md)
* [Advanced vector generalization](generalization.md)
* [Geocode table](geocodetable.md)
* [Geodata to PMTiles](geodata2pmtiles.md)
* [Change geometries in layer groups](geometry_changer.md)
* [GeoPackage to MapInfo Enhanced TAB](gpkg2etab.md)
* [GPS track animation for social media](gpxanimation.md)
* [Geotag photos using GPX track](gpx2exif.md)
* [Clip GPX file by bounding box](gpxclipbbox.md)
* [Split GPX file by days](gpxdailysplit.md)
* [Merge GPX files](gpxmerge.md)
* [Split GPX into individual tracks](gpxtracksplit.md)
* [Meter grid](grid.md)
* [Hello, World!](hello.md)
* [iNaturalist species observations to geodata](inaturalist_download.md)
* [Image classification](image_classification.md)
* [Image clustering](image_clustering.md)
* [Copernicus Sentinel image search](imagesearch.md)
* [DWG to DXF](import_dwg.md)
* [DWG to DXF (libdxfrw)](import_dwg_libdxfrw.md)
* [Improve DEM](improvedem.md)
* [Intersection registry](intersect_layers.md)
* [Join layer and table by field](join_by_field.md)
* [KML to geodata](kml2geodata.md)
* [Projection (Dae, Collada) to Shapefile](kmldae2footprints.md)
* [Search and save Landsat-L2C2 scene previews](landsat_search.md)
* [Landsat radiometric calibration](landsat_to_radiance.md)
* [Landsat reflectance calculation](landsat_to_reflectance.md)
* [Landslide Susceptibility Analysis](landslide_analysis.md)
* [Vector layers in Web GIS from archive](layers2ngw.md)
* [Form multi-channel raster from individual channels](layerstack.md)
* [Lines to polygons](lines2poly.md)
* [Temporal polygons from lines and points](lines2polygons.md)
* [MapInfo ready for QGIS](mapinfo2qgis.md)
* [Vertical map for Social Media](mappy.md)
* [Max distance between polygon nodes](maxdist.md)
* [MBTiles to NGRC](mbtiles2ngrc.md)
* [Marine traffic report](mt2report.md)
* [Normalized difference index](ndi.md)
* [Attribute to description for Web GIS](ngw_attribute2description.md)
* [Contribution activity report for resource](ngw_contribution_activity.md)
* [Copy nextgis.com resource group with data](ngw_copy_group.md)
* [Duplicate Web GIS layer](ngw_copy_layer.md)
* [Feature history](ngw_feature_history.md)
* [Resource group to Web Map](ngw_group2webmap.md)
* [Intersection registry for Web GIS](ngw_intersect.md)
* [Get the layer historical state](ngw_layer_historical_state.md)
* [Manage Web GIS layer structure](ngw_layer_schema.md)
* [Merge two Web GIS vector layers](ngw_merge_layers.md)
* [Vector layers from Web GIS to GeoPackage](ngw_to_gpkg.md)
* [Web Map to image](ngw_webmap2image.md)
* [Combine two Web Maps into a new one](ngw_webmap_combiner.md)
* [Geocode with Nominatim](nominatim_geocode.md)
* [Merge vector layers](ogrmerge.md)
* [Download OpenStreetMap](osm_download.md)
* [Clip PBF file by bbox](osmclip_bbox.md)
* [Convert Garden Gnome Package panoramas to JPEG](pano2vr.md)
* [Add Google Photosphere XMP metadata to photos](panotag.md)
* [Import PastVu photos to Web GIS](pastvu2webgis.md)
* [Search & download Planetary Computer](planetary_search.md)
* [Point cloud to tileset](pointcloud2tileset.md)
* [Statistics of points and tracks in polygons from NGW](points_on_tracks_stats.md)
* [Polygons topological simplifier](polysimplifier.md)
* [Parse addresses](postal.md)
* [Predict satellite overpass](predict_overpass.md)
* [Prepare raster](prepare_raster.md)
* [Check geometries (QGIS)](qgis_check_geometries.md)
* [Fix geometries (QGIS)](qgis_fix_geometries.md)
* [Multipart to singleparts](qgis_multiparttosingleparts.md)
* [QGIS project to PDF](qgis2pdf.md)
* [Set of squares with transects](quadro.md)
* [Raster calculator (GRASS)](r_mapcalc.md)
* [Raster calculator (GDAL)](raster_calculator.md)
* [Raster to NGRC](raster2tiles.md)
* [Erase features](removecontents.md)
* [Sentinel-2 scenes to GPKG](s2_search.md)
* [Sunlight hours prediction](solar_hours.md)
* [Spatial Join (Join by location)](spatial_join.md)
* [Compute spectral index](spectral_indices.md)
* [Split into equal parts](split_to_equal.md)
* [Split into rectangles and calculate their number](split_to_rect.md)
* [Split at 180th meridian](split180.md)
* [Split Complex Polygons](splitcomplex.md)
* [Google Sheets to Web GIS](spreadsheet2layer.md)
* [Table to vector file](table2geo.md)
* [Create temporal cache](temporal_split.md)
* [Comprehensive Terrain Analysis](terrain_analysis.md)
* [TROPOMI to GeoTIFF](tropomi2geotiff.md)
* [Update Web GIS layer from CSV](update_vector_layer.md)
* [Prepare vector layer for DataLens](vector2datalens.md)
* [Layer intersection](vectorclip.md)
* [Web GIS structure to spreadsheet](web_gis_structure.md)
* [Web Map to QGIS project](webmap2qgis.md)
* [Wildfire Susceptibility Analysis (Topographic)](wildfire_analysis.md)
# tools.html.md
# Tools
Detailed descriptions of the tools currently available in the Toolbox can be found [here](https://docs.nextgis.com/docs_toolbox/source/tools.html).
# trackers.html.md
# Trackers settings
In the Trackers section of the Control panel you can configure the display of the tracks on Web Maps and their export as GPX files.
Here are the parameters that can be modified:

* Interval for splitting tracks, min (default value is 30)
* Parameters for detecting stops: if the speed is lower than a set amount for a set time, a stop is recorded in the track. Minimal speed is in km/h (the default value is 5). Minimal time to mark a stop, in seconds (the default value is 300 sec., i.e. 5 min.).
* Timezone settings - select a time zone marked as GMT+-N from a dropdown menu
#### NOTE
The number of trackers available depends on your [subscription plan](https://nextgis.com/pricing-base/). On Free and Mini you can add 1 tracker, on Premium the default limit is 5 trackers, but it can be extended.
#### SEE ALSO
[Tutorial: Track Asset and Team Locations in Real Time](https://docs.nextgis.com/docs_howto/source/tutorial_track.html)
## Viewing tracks on a Web Map
Data on moving objects collected in NextGIS Tracker, NextGIS Collector or NextGIS Mobile can be displayed on any Web Map of your Web GIS if the tracker is linked to it.
To view the tracks open any Web Map or create a new one. On the left panel bar you’ll find the tracker icon .

Tracker panel has two parts: calendar and tracker list.
Use the calendar to filter tracks by date and time.
Below you’ll see the list of all available trackers. Trackers can be sorted by name or time of the recording.
By default the tracks are hidden. To view a track on the Web Map, find the tracker(s) in the list and select track elements you’d like to display. Then set a date range in the calendar or in the track’s context menu select **Set filter to last day with data**.

Elements you can view:
*  last point of the track
*  the route lines of the GPS-tracks
*  points where coordinates were picked
*  stops (not all tracks have them)
Three dots in the top right corner of the track open its context menu that allows to:
- Zoom to layer;
- Set filter to last day with data;
- Show last activity (hourly chart for a selected date).

Click on a point to show a popup with tracking information: date, time, speed (km/h), height (m), course (bearing i.e. the horizontal direction of travel of this device in the range between 0 and 360 counting clockwise from the North), number of satellites and HDOP.

Horizontal dilution of precision or HDOP is a parameter showing how precise the GPS readings are. The smaller the HDOP value, the higher the accuracy of horizontal coordinates. HDOP=1 is ideal, 3-4 is okay, if HDOP is over 6-8 it means that the position of satellites at the moment is unfortunate providing information with low accuracy. HDOP depends on the number of visible satellites, their position in the sky and relative to the receiver.
## Reports
By clicking the ‘Reports’ button you can create various types of reports depending on selected tracker and parameters.

A separate page for creating tracking reports opens.

In the first block, you need to select the trackers for which you want to get an information summary.
- report type (mileage, top speed, average speed, spent fuel, stops, [GPX-file](https://docs.nextgis.com/docs_ngweb/source/trackers.html#track-export));
- time range;
- grouping by days/hours.
Next select the trackers that you want to get information about and press The report will appear on the same page below.

#### NOTE
For getting the spent fuel report you need to set up [fuel consumption](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracker-settings) parameter in NextGIS Web settings (l/100 km)
## Export to GPX
You can use the [report page](https://docs.nextgis.com/docs_ngweb/source/trackers.html#tracker-report-icon-pic) to export track with the selected parameters as a GPX file.

# tracking.html.md
# How to enable the monitoring of moving objects (tracking)
#### NOTE
The number of available trackers depends on the current [plan](https://nextgis.com/pricing-base/). For **Free** and **Mini** - 1 tracker, for **Premium** - 5 trackers.
For on-premise solutions, Tracking Hub is available for NextGIS Web [Extended](https://nextgis.com/pricing/#ngwextended) and [Enterprise](https://nextgis.com/pricing/#ngwenterprise).
## Introduction
Monitoring of moving objects function is based on registration of the user’s geolocation changing over time
and is necessary to record the history of its movement on the ground.
Tracking can be useful when you need to save a record of the route,
track and further analyze the trajectories of objects moving in space.
## How tracking works
A track is a sequence of points in space over time to be displayed on a Web Map.
Monitoring process looks like this - a person launches tracking in the mobile application, follows the route, stops tracking at the end.
After that, the recorded tracks are sent to the Web GIS server and are displayed on the Web Map (if it’s configured).
## Creating tracker groups
If you want see tracks on a Web Map, you need to set up your Web GIS - create special resource groups:
1. Create a resource **Trackers group**. This is a folder which contains trackers (devices that send data to Web GIS).

1. Create a resource **Tracker** in the trackers group. To sync a tracker with a mobile device, you need to enter the device’s ID. It can be found in NextGIS Mobile/Collector app’s settings (Mobile: Settings -> My tracks -> under Send location to server).

## Tracking in NextGIS Mobile, Collector and Tracker
For now you can track in mobile apps such as
[NextGIS Mobile](https://play.google.com/store/apps/details?id=com.nextgis.mobile),
[NextGIS Collector](https://play.google.com/store/apps/details?id=com.nextgis.collector) and [NextGIS Tracker](https://play.google.com/store/apps/details?id=com.nextgis.tracker).
An Android smartphone is required for that.
### 1. NextGIS Mobile
It’s the complete mobile [GIS](https://nextgis.com/nextgis-mobile/) that allows you to create, edit and share geodata both online and offline.
First of all you need to install the application and sign in.
Then activate the ‘Send location to server’ option in the ‘My tracks’ section of Settings.

Here you can also see the unique identifier (ID) of the device, which must be specified in the tracker settings in Web GIS.

The process of recording a track is described in details in the [Tracks](https://docs.nextgis.com/docs_ngmobile/source/tracks.html/) section of the documentation for NextGIS Mobile.
### 2. NextGIS Collector
This application is intended for collective data collection. It allows the Web GIS’s owner to get people on a team and begin [data collection](https://docs.nextgis.com/docs_ngcom/source/collector.html#team-participants-mobile-app-installation-and-start-of-data-collection) using mobile devices.
Track recording process is similar to NextGIS Mobile’s [algorithm](https://docs.nextgis.com/docs_ngmobile/source/tracks.html#recording-a-track) but with some interface differences.
So in order to start a new track you need to tap on the ‘human’ icon in the upper panel and select ‘Start’.

The end of the recording can be done both in the panel in the background mode, and in the same context menu of the top panel by clicking “Stop”.
The track record will then appear in your Web GIS.

The track list is in the second line of the context menu for the track icons. Here you can enable/disable tracks, color them according to the palette, remove or share in GPX format.

**3. NextGIS Tracker**
This is a simple app for track recording.
[Learn more](https://docs.nextgis.com/docs_ngtracker/source/intro.html).
## Tracking results on the Web Map
If the tracker is added to the Web GIS, you can:
* [View tracking results](https://docs.nextgis.com/docs_ngweb/source/trackers.html#viewing-tracks-on-a-web-map) on any Web Map of your Web GIS;
* [Generate reports](https://docs.nextgis.com/docs_ngweb/source/trackers.html#reports) on mileage, top speed, average speed, spent fuel, stops;
* [Export tracks](https://docs.nextgis.com/docs_ngweb/source/trackers.html#track-export) as GPX files.
# tracks.html.md
# Tracks
NextGIS Mobile allows to record and display tracks. Track points are recorded to the internal database and combined to display on the map as a line.
## Settings
To record tracks, set up the following parameters:
* Grant the mobile app permission to access device location (in the Android Settings).
* In My tracks page of the Settings check “Send location to server”:

* Copy UID indicated in My tracks section and add the tracker [to your Web GIS](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create).
Now you can send the tracks to Web GIS and [view them on a Web Map](https://docs.nextgis.ru/docs_ngweb/source/trackers.html#tracking-web-map).
## Recording a track
Tracks can be recorded in two ways:
* [As GPX](https://docs.nextgis.com/docs_ngmobile/source/tracks.html#ngmobile-record-tracks-gpx);
* [As new vector feature](https://docs.nextgis.com/docs_ngmobile/source/tracks.html#ngmobile-edit-vector-tracks).
### Record tracks in GPX format
For each point of the track, the following information is recorded: date, time, speed (km/h), height (m), course (bearing i.e. the horizontal direction of travel of this device in the range between 0 and 360 counting clockwise from the North), number of satellites and HDOP.
To start recording a track open the main menu by tapping three dots in the top right corner and select **Start new track**.

Track recording is performed in background mode. You’ll need to allow in your device settings.
* Allow background access to geolocation;
* Disable battery optimisations (otherwise it may shut down the track recording).
See details in our video:
Watch on [youtube](https://youtu.be/uPkVkVakppE?si=bZKQqlM4xmwuRqbC).

To indicate that the process is running a status icon of the walking man is displayed in Android Notification bar. For more information click on it and it will show the track status as shown in [Fig. 1012.](#ngmobile-new-gpx-layer-1-pic) below.

During track recording you can see the geometry of the track on Map screen as shown below in [Fig. 1013.](#ngmobile-new-gpx-layer-2-pic)

Recorded track is displayed on the map immediately even before the recording is completed. The status icon (walking man) is visible in the notification bar. The location marker shows the current device location.
#### NOTE
Track points are grouped by days and sessions within a day. If track recording continues the next day track will be split up into two parts. If you want to combine them into one track, use [GPX merge](https://toolbox.nextgis.com/t/gpxmerge)
To stop track recording, tap **Stop** either in notification bar (see item 4 in [Fig. 1012.](#ngmobile-new-gpx-layer-1-pic)) or in the main menu.

The status icon will disappear from notification bar, the location marker will be replaced by the red flag indicating the end of the track, and the track line will change its colour as shown below in [Fig. 1015.](#ngmobile-new-gpx-layer-3-pic)

You can now manage this track, including its export in GPX format. To learn how to export the tracks see [Exporting tracks in GPX](share.md#ngmobile-export-gpx). Tracks can also be [displayed on a Web Map](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create).
### Record tracks to vector layer
You can also add a feature to an existing line or polygon vector layer by tracking.
1. Tap on Main actions button (see item 8 in [Fig. 943.](main.md#ngmobile-main-activity-pic-1)) and then”Add geometry by walk” button (see item 5 in [Fig. 985.](editing.md#ngmobile-common-action-menu-pic)). It will open list of all editable Linestring/Multilinestring and Polygon/Multipolygon vector layers in a separate dialogue as shown below in [Fig. 1016.](#ngmobile-selectlayer1-pic)

1. Select the layer to which you want to add a new feature by walk. This layer will be opened in Edit mode as shown below in [Fig. 1017.](#ngmobile-new-gpx-vector-1), and NextGIS Mobile will start recording a new geometry to the vector layer.

#### NOTE
You can also switch to “Edit by walk” mode by first switching to Edit mode using any of the methods described in [Switching to Edit mode](editing.md#ngmobile-switch-to-edit) section, and then by tapping “Append geometry by walk” button (see item 9 in [Fig. 992.](editing.md#ngmobile-creating-lines-pic), item 11 in [Fig. 993.](editing.md#ngmobile-creating-multilines-pic), item 11 in [Fig. 994.](editing.md#ngmobile-creation-landfill-pic) and item 11 in [Fig. 995.](editing.md#ngmobile-creation-multipolygon-pic))
If you’re not satisfied with the accuracy of the appended geometry, you can access NextGIS Mobile Location settings (see [Fig. 953.](settings.md#ngmobile-settings-place-pic)) directly from “Edit by walk” screen (see item 6 in above [Fig. 1017.](#ngmobile-new-gpx-vector-1)).
1. When recording is finished tap on the “floppy” button (see item 4 in [Fig. 1017.](#ngmobile-new-gpx-vector-1)). It will open the standard Attributes editing form, similar to [Fig. 991.](editing.md#ngmobile-input-form-attributes-pic), as shown below in [Fig. 1018.](#ngmobile-new-gpx-vector-2).

1. The new feature is now added to the existing Linestring/Multilinestring or Polygon/Multipolygon vector layer.
## Managing recorded tracks
To start managing recorded tracks first find “My Tracks” group in Layers tree panel. Then tap on contextual menu button as shown in [Fig. 1019.](#ngm-tree-layers-gpx-pic) and select “List”.

This will open a list of recorded tracks as shown in [Fig. 1020.](#ngmobile-tracks-list-gpx-pic) below. Tracks’ points will be grouped by days and sessions within the day.

Select a track by ticking the corresponding checkbox, and buttons in Top toolbar will become active as shown in [Fig. 1021.](#ngmobile-layer-gpx-selected-pic) below.

To hide a layer from Map screen tap on “Eye” button (item 6 in [Fig. 1021.](#ngmobile-layer-gpx-selected-pic)).
You can change the colour of the track tapping the “Colour palette” button (item 3 in [Fig. 1021.](#ngmobile-layer-gpx-selected-pic)).
When you tap to open contextual menu (see item 5 in [Fig. 1021.](#ngmobile-layer-gpx-selected-pic)), the following menu items will pop up as shown below in [Fig. 1022.](#ngmobile-layer-gpx-menu-pic).

* You can Show or Hide the selected track in the map screen. The starting point is shown in Green marker & the end point is shown in Red marker.
* You can delete the track (permanently).
* You can select all the tracks and perform above actions for all of them at a once.
# transfer.html.md
# How to transfer data from one Web GIS to another
After trying out the functionality in a cloud Web GIS you may decide to deploy an on-premise version of NextGIS Web.
To move your resources to the new Web GIS, you need to download them to your computer and then upload them to the new server.
## Create local copy on your device
The easiest way to do it is via [NextGIS Connect plugin](https://docs.nextgis.com/docs_ngconnect/source/index.html).
[Create a connection](https://docs.nextgis.com/docs_ngconnect/source/ngc_install.html#ng-connect-new-connection) to your old Web GIS. Select resource(s) in the NextGIS Connect panel and click **Add to QGIS**.
If you want to **transfer all the data quickly**, you can select the Main resource group, add it to QGIS and handle the data structure later.
If you want to **preserve the resource structure**, follow these steps:
1. Add **Web Maps** to QGIS, saving each one as separate project. When you download a Web Map in NextGIS Connect, all layers and basemaps added to it are added to the project.
2. Add **resource groups** containing layers that are not added to Web Maps, to one big project. The hierarchic structure of resource groups is preserved.
You can also get the full resource tree of your Web GIS in table format using Toolbox tool [Web GIS structure to spreadsheet](https://toolbox.nextgis.com/t/web_gis_structure).
What resources can be downloaded via NextGIS Connect:
* Vector layers with styles
* Raster layers with styles
* WFS, WMS, TMS layers
* WFS, WMS, OGC API - Features services
* TMS and WMS connections
* Basemaps
* Lookup tables - they are added to QGIS as value map widget. To upload the lookup table to the new Web GIS you need to export the values to CSV and re-add the lookup table to the layer using value relation widget.
To add multiple resource at once, you can select:
- Web Map - a QGIS project will be created containing layers, styles and basemaps. A mutually exclusive group will be created for all the basemap layers.
* Demo project - a QGIS project will be created containing layers, styles and basemaps;
* Resource group - a new group is created in QGIS containing resources of the types listed above, including Web Maps.
Keep in mind: when you add a Web Map to your QGIS project, all layers are added. So if you select a resource group that contains a Web Map + its layers, there may be duplicates.
## Upload data to the new Web GIS
In the NextGIS Connect plugin [create a new connection](https://docs.nextgis.com/docs_ngconnect/source/ngc_install.html#ng-connect-new-connection) to the target Web GIS.
Open QGIS project with the downloaded data.
In the NextGIS Connect panel select a resource group for upload, click **Add to Web GIS** and select **Upload all**. In the pop-up dialog enter the name for the new resource group that is created for the uploaded layers.
When you upload an entire QGIS project, Connect creates a folder that contains all the layers of the project preserving the folder structure, plus one Web Map with all the layers added to it.
If you have created several projects while creating the local copy of your data, you need to repeat the process for each of them.
This way you can transfer most of the resources to the new Web GIS. Some resources, however, are tied to a specific Web GIS, so they need to be created manually.
These are non-transferable resources:
* [Tracker groups](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create)
* [Trackers](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create)
* [Collector projects](https://docs.nextgis.com/docs_ngweb/source/collector.html#ngw-collector-create-project)
* [Tileset](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-tile-set)
* [File bucket](https://docs.nextgis.com/docs_ngweb/source/create_other.html#ngw-create-file-bucket)
* SVG marker library - if you’ve been using a marker library, we recommend embedding the icons into the style, you can do it with the Toolbox tool [Embed SVG into QGS/QML](https://toolbox.nextgis.com/t/embedsvg)
## Alternative way to backup data using Toolbox
You can partially transfer resources from one Web GIS to another without using the desktop app with the help of [Toolbox](https://toolbox.nextgis.com/?lang=ru&tags=10).
Create local copy on your device:
* [Web Map to QGIS project](https://toolbox.nextgis.com/t/webmap2qgis) - saves only the layers added to a Web Map.
* [Vector layers from Web GIS to GeoPackage](https://toolbox.nextgis.com/t/ngw_to_gpkg) - saves only vector layers from the selected resource group.
Upload to Web GIS:
* [Vector layers in Web GIS from archive](https://toolbox.nextgis.com/t/layers2ngw)
# transform.html.md
# Data conversion
* [How to process your data](process.md)
* [How to change coordinate reference system of the data](cs_change.md)
* [How to convert file to another GIS format](type_change.md)
* [How to change data encoding](encoding_change.md)
# translation.html.md
# How to improve translation
NextGIS Web is an open solution, which can be improved by any user.
The following user interface languages are currently available for NGW:
* Bulgarian
* Czech
* Deutsch
* English
* Spanish
* French
* Italian
* Portuguese
* Russian
* Chinese
We invite users to contribute to the quality of our translations.
If you are an expert in any of the listed or other languages, you can improve the current user interface by yourself.
As soon as 80% of translated content appears, we add a new language to NGW.
## Join the project
The translation of [NextGIS Web](https://nextgis.com/nextgis-web/) is carried out on the platform [POEditor](https://poeditor.com/).
First, you need to [sign up](https://poeditor.com/login/).
After authentication you can join the NextGIS Web GUI project via this [link](https://poeditor.com/join/project?hash=dOVs4gs2WS).
Then select languages and click **Join translation**.

After that, this [page](https://poeditor.com/projects/) will display a list of projects (in our case, NextGIS Web GUI) that have a set of selected languages.
## How to translate
To start translating click on the icon of a specific language in the project.

Row order and filter are customizable. There is also a search.

Strings often contain such parameter names as ‘date_first’ and ‘date_last’ like in the image above. They don’t need to be translated.
Bulgarian translation example:
* en. - *‘date_first’ and ‘date_last’ are mutually exclusive*.
* bg. - *‘date_first’ и ‘date_last’ са взаимноизключващи се*.
Also you can see these parameters: %s, %d, %f and like these that also don’t require the translation.
When the program is running, they are automatically replaced by string or numeric parameters.
Example 1:
* en. - *User count: %d*.
* bg. - *Брой потребители: %d*.
Example 2:
* en. - *Field ‘%s(?)’ encoding is broken*.
* bg. - *Кодировката на полето ‘%s(?)’ е счупена.*.
Please ignore the fact that the quotation marks and brackets are always different (single ‘, double “ or () ).
Don’t change and leave them the same when translating - this is important for the code to work correctly.
# tropomi2geotiff.html.md
# TROPOMI to GeoTIFF
The tool converts TROPOMI nitrogen dioxide data to GeoTIFF format.
Inputs:
* TROPOMI data file in NetCDF format obtained from [https://s5phub.copernicus.eu/dhus/#/home](https://s5phub.copernicus.eu/dhus/#/home).
Product type: L2_\_NO2_\_, Timeliness: Offline.
Example of a file’s name: S5P_OFFL_L2_\_NO2_\_\_\_20190901T091635_20190901T105804_09761_01_010302_20190907T113505.nc
This dataset is available at [https://browser.dataspace.copernicus.eu](https://browser.dataspace.copernicus.eu) or `s3://meeo-s5p/OFFL/L2__NO2___/` (access via AWS CLI).
Outputs:
* GeoTIFF output image
Launch the tool: [https://toolbox.nextgis.com/t/tropomi2geotiff](https://toolbox.nextgis.com/t/tropomi2geotiff)
Interactive map with the result of the tool run:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# troubleshooting.html.md
# Troubleshooting
If you encounter any issues while working with the plugin, please use the basic checks described below.
## Problems connecting to Web GIS (NGW)
### Check QGIS version
Update software if updates are available. Using our [NextGIS QGIS](https://nextgis.com/nextgis-qgis/) follow:
* Check version: Help > About
* Check updates: Help > Check QGIS version
* Restart QGIS after update
### Check NextGIS Connect version
To work, it is recommended to use the latest version of the plugin. You can check and update it as follows:
* Top Menu > Plugins > Manage and install plugins
* If the version is outdated, there will be a message at the top saying that there is an update for the plugin, and an update button will be available in the lower right corner of the window
There are no more updates for QGIS 2.X since NextGIS Connect 0.14.0. Minimum QGIS version is 3.X now.
### For corporate network
If you work in the internal corporate network, set up the settings of your proxy (Settings> Options> Network)
### Credentials
Check the credentials when creating a connection to Web GIS (URL, username and password). The URL format is [https://demo.nextgis.com](https://demo.nextgis.com). If you forgot your password, instructions for recovering are [here](https://docs.nextgis.com/docs_ngcom/source/faq_webgis.html#ngcom-change-passwords-webgis).
## Issues uploading data
If the rasters are not uploaded, check the checkbox in the connection settings “Upload rasters as Cloud Optimized GeoTIFF” (COG).
Error “Maximum number of resources reached” can occur if your Web GIS is on Free plan and the number of layers is limited to 15. To upload more layers, [switch to Premium](https://my.nextgis.com/subscription/) in your NextGIS ID account.
# tutorial_collect.html.md
# Tutorial: Collect Spatial Data in the Field
NextGIS Web is a data-centric server GIS allowing you to store, manage and publish spatial data in a flexible and effective way. It has an integrated mobile data collection subsystem that you can use to organize collaborative field work. In this step-by-step tutorial you will learn how to create a data collection project and start gathering spatial information with a mobile application. Register a free cloud account and try it right away!
In this example, we will create a project to collect data about trees in the city. An Android smartphone is required to work with mobile application.
Setting up
* [Step 1. Free account and Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#account)
* [Step 2. Resource group](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#webgis)
* [Step 3. Vector layer (database)](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#create-layer)
* [Step 4. Data collecting form](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#form)
* [Step 5. List of field workers](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#collectors)
* [Step 6. Collector project](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#project)
Collect and check the data
* [Enter data](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#fieldwork)
* [Check and visualize in Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_collect.html#check)
## Step 1/6 Create free account and Web GIS
Go to my.nextgis.com, click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

## Step 2/6 Access your Web GIS and create resource group
Click on the Web GIS link or type it into your browser.
You’ll see the main interface of your Web GIS.

In NextGIS Web everything is a resource — layers, Web Maps, folders (groups), connections to services and databases. Resources are organized as files at your computer — in a tree.
Let’s create our first resource, a folder or *resource group* named Data collecting. To do that, click the blue **Create resource** button on the top of the page.

When you click **Create resource**, a window appears showing all available options of what could you create in the current context. Select **Resource group**.

The resource creation window consists of several tabs, in this case we need to set only the name `Data collecting` on the “Resource” tab.

Click **Create** and you’ll be redirected to the page of the new resource.
The URL in your browser is the path to the resource, and the numbers at the end of the URL are the resource ID.

*Data collecting* is a child for the *Main resource group* folder where we created it. The parent resource is shown above the resource name.
Now you can upload data to this folder.
## Step 3/6 Create a vector layer (container for data collecting)
Next we need to create a vector layer, it will serve as a database where the collected information about geographical objects would be stored. Click the **Create resource** button, then select **Vector layer**.

It is possible to upload a vector layer from a file, or create it from skratch. Open the dropdown menu on the top of the “Vector layer” tab and select **Create empty layer**.

In the changed interface select the **Point** geometry type.

On the **Resource** tab set the name for the new layer, `Trees`, and click **Create**.
The vector layer is created and you are redirected to its page. You can see primary metadata and layer structure (currently empty).

## Step 4/6 Create data collecting form
By creating a form we’ll accomplish two things at once:
1. Determine what kind of data we want to collect to the vector layer,
2. Create a comprehensible interface for the data collectors.
On the vector layer resource page click **Create resource** and select **Form**.

Switch the mode to **Design form**

In this visual drag-n-drop interface you could construct a form that your field workers would see on their mobile devices.
This tab is split vertically into three sections:
* On the left: a list of available elements,
* In the middle: layout for the smartphone screen,
* On the right: settings for the selected element.

Click on the **Label** element and drag it to the layout. It appears with the default text value.

On the right panel find the **Properties** block and set the label value to `Tree species`. This is the title for the first data field we’re going to add.

Now we need to add the field where collectors enter the data. For this first field we’ll provide the collectors with a predetermined list of tree species.Select the element **Dropdown** and drag it to the layout.
A dialog appears that prompts you to select the attribute of the layer to which the data entered in this field is to be written.

Currently we don’t have any attributes yet, so click on the **Add** button. For the new field set up the parameters:
* Keyname = `species`,
* Display name = `Species`,
* Data type = STRING.
Then click the blue **Add** button.

And then **OK** in the Data binding dialog.
Now the layout looks like this:

Click on the Dropdown element and in the Properties block activate **Remember last value** and **Enable search** checkboxes.
Now we need to enter the list of options to choose from in the dropdown. Click **Edit** button next to the Options.
An empty table appears. The first column, Value is what would be recorded to the database, Label is what field workers would see in the interface.
We’ll keep it simple and have the same things in both columns.
Enter six options: `Beech, Oak, Spruce, Pine, Birch, Other`.

Next element we’re going to add is a simple checkbox. Click on the **Check box** element and drag it to the layout. In the binding dialog add a new field with:
* Keyname = `damaged`,
* Display name = `damaged`,
* Data type = INTEGER.
In the element properties set:
* Label = `The tree is damaged`.
Here’s the result you should get:

For the next element, click on the **Date & time** and drag it to the layout. In the binding dialog add a new field with:
* Keyname = `datetime`,
* Display name = `Date and time`,
* Data type = DATETIME.
In the element properties set *Type* to Date & time.

Then click on the **Photo** element and drag it to the layout. In the element properties set *Max* number to 5.
Now that we added all the elements we need to add the corresponding fields to the layer. Activate the checkbox **Add absent fields to layer**. This is the final look of the form:

Click the **Create** button. After creation you are immediately redirected to the new resource page.
To allow people to use this form for data collection you need to add them to the list of collectors.
## Step 5/6 Create list of field workers
Open the menu in the top right corner of the NextGIS Web interface and go to the **Control panel**.

Then select **Collector projects**.

Here you can manage the list of users connected to your Web GIS as field data collectors. Any user with NextGIS ID account can be added as a field data collector, even if they are not a part of your [team](https://docs.nextgis.com/docs_ngcom/source/teams.html).
Initially the list is empty.

Click the **Create** button to add a user to the list of collectors. First, add yourself. In the NextGIS ID field enter your email used for the registration on my.nextgis.com.

A new entry is added to the list of collectors.
## Step 6/6 Create Collector project
Return to the “Data collecting” resource group and create a new resource - **Collector project**.

On the Resource tab set the name of the project that the data collectors would see in the app. Enter `Trees in the city`.

On the Project tab, leave all settings at their default values.

On the Items tab determine the contents of your project. Which data should the field workers gather? Which layer should they see as a reference on the map? Click **+ Layer** button and select `Trees` layer.

Click on the added item to see its properties in the panel on the right.
Make sure that *Editable* and *Syncable* check boxes are active.

On the Collectors tab activate the check box near your email - it adds you as a field data collector to this project.

Click **Create** to finish.
That’s it. A project has been created and field workers could start their work.
For this project you’ll act as the data collector yourself.
## Collect data in the field (from the field worker’s perspective)
Install NextGIS Collector application on your Android device. It could be found in Google Play.
Run the application. Sign in with the email you used to create NextGIS ID and its password.

After authorization you can see a list of projects assigned to you. Select **Trees in the city** and confirm joining it.

Inside the project you see a list of layers. This project contains only one - *Trees*.
Go to the nearest tree and click **USING GPS** - it records the current GPS coordinates of your mobile phone and opens the form to enter the other information.

Pick the tree species from the dropdown, check if it’s damaged, add one or several photos, and then click  button to save.

Data is collected. As a field worker you could go to the next tree and repeat the procedure.
## Check collected data in Web GIS
Return to Web GIS and open the *Trees* vector layer resource. In its metadata you can see that the feature count has changed. It’s synchronized as the collected data’s been uploaded to the cloud.

To display the added feature click on the preview button:

Or check the attribute values in the feature table:

Open the feature preview to see the attached photo.

This allows you to track the data collection process in real time. The layer that stores the data can be used like any other - added to Web Maps, published as tiles or via OGC protocols, downloaded, connected to QGIS and so on.
# tutorial_qgis.html.md
# Tutorial: Seamless QGIS Integration
NextGIS Web is a data-centric server GIS, that allows you to store, manage and publish spatial data in a flexible and effective way. It has a deep integration with QGIS, the leading free and open-source GIS software.
Integration covers publishing QGIS projects as Web Maps, connecting to Web Maps as QGIS projects, data syncing and collaborative editing from several QGIS instances.
In this step-by-step tutorial you will learn how to publish your QGIS project to the web, then connect to it from another QGIS instance, manage styles at Web Maps from QGIS and edit data from QGIS directly at the server. Register a free cloud account and try it right away!
[`Download tutorial data`](https://nextgis.com/tutorials/seamless_qgis_integration.zip) (source: [OpenStreetMap](https://www.openstreetmap.org/), [data.nextgis.com](http://data.nextgis.com), [Copernicus](https://browser.dataspace.copernicus.eu/))
#### SEE ALSO
[Store, manage and publish your spatial data](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html)
Publish your QGIS project online
1. [Create free account and Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#account)
2. [Open and explore QGIS project](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#project)
3. [Install NextGIS Connect plugin](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#install)
4. [Create a connection](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#connection)
5. [Publish QGIS project to NextGIS Web](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#publish)
Result: [Explore the Web Map and resources](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#webmap)
Use QGIS to edit data stored in Web GIS
1. [Connect to Web Map from QGIS](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#howto-qgis-download)
2. [Update layer styles at the Web Map from QGIS](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#howto-qgis-vector-style)
3. [Update raster layer style on a Web Map](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#howto-qgis-raster-style)
4. [Edit data from QGIS and explore results at the Web Map](https://docs.nextgis.com/docs_howto/source/tutorial_qgis.html#howto-qgis-edit-data)
You can see the detailed instructions below or watch a video:
Watch on [youtube](https://youtu.be/mDbkUWVhs_M?si=4UOhAYuEg-AUKwkn).
## Step 1/5 Create free account and Web GIS
Go to my.nextgis.com, click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

Copy the address of the created Web GIS. In this example: `https://ngw-quickstart.nextgis.com`. You’ll need it later to create a connection.
## Step 2/5 Open and explore QGIS project
[Download the tutorial data](https://nextgis.com/tutorials/seamless_qgis_integration.zip) and unzip the archive.
Click on the file called `Sursee.qgz` to open it in QGIS.
#### NOTE
If you don’t have QGIS yet, [download](https://qgis.org/download/) and install it.
This is a typical QGIS project with raster and vector layers, a couple of basemaps and rich scale-dependent styles set up with exclickions. Points of interest are styled with advanced “Point Cluster” renderer using dynamic cluster symbol size. There are also embeded SVG icons in the “Road network” layer.

Zoom in to explore multiscale styling.

## Step 3/5 Install NextGIS Connect plugin
Go to the “Plugins” — “Manage and Install Plugins” menu

Go to the “All” tab and find a plugin named NextGIS Connect. Use a search bar at the top of the interface for faster access. Click the **Install Plugin** button.

After installation NextGIS Connect is available in the “Internet” menu and as a toolbar icon: . When NextGIS Connect is active, the side panel is visible.

Go to the plugin settings, using  icon. This is a place for setting up everything related to QGIS–NextGIS Web integration. First, let’s create a connection.
## Step 4/5 Create a connection
To establish a link between your QGIS app and a Web GIS, you need to create a connection.
Go to the [Web GIS page](https://my.nextgis.com/webgis/) of your NextGIS ID account and copy the link to your Web GIS (see `tutorial_my_wg_pic`). In this example the link is: `https://ngw-quickstart.nextgis.com`.
In QGIS open the NG Connect settings and click on the **New** button in the “Connections” group.

Enter the Web GIS address to the URL field, then click  to create a new Authentication configuration.

In the new dialog enter the email and password you used to register at my.nextgis.com at step 1, and click the **Save** button.

Click the **Test connection** button to ensure that you entered all the data correctly. Then click the **Save** button.

Exit settings by clicking the **OK** button in the bottom of the page.
Now in the NextGIS Connect panel you can see the resource tree of your Web GIS.

Using this panel you could upload local data to Web GIS, connect remote layers and maps to QGIS, update styles, create services and many more. It also provides a simple way to upload an entire QGIS project as a Web Map.
## Step 5/5 Publish QGIS project to NextGIS Web
In NextGIS Connect panel select the *Main resource group* folder, then open dropdown menu with  icon and select **Upload all**.

Enter a name for the project. In this example, it is `Sursee`.A folder with this name is created in Web GIS, and all the project data is uploaded there.

The upload starts. You can track the progress by checking the status message.

By default, once the Web Map is successfully published, it opens automatically in your browser. Also, you can open it from the Connect panel. Right-click on the Web Map and select “Open in browser” in the context menu.
Note that all the layers of the project are now visible in the NextGIS Connect panel.

Now you can explore the Web Map. Proceed to step 6 to learn how to connect to an existing Web Map in QGIS.
### Explore the Web Map and resources
A Web Map has been created from the project. It looks exactly the same as the original QGIS project, because NextGIS Web uses QGIS styles as primary way to define layer styles.

You can enable and disable layers and categories within layers. Web Map has its own URL, so you can easily share it. Play with the Web Map interface. Learn more about it: [https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html)
Click the  icon at the top left corner to view the main interface with the resource list.

Open the Sursee folder. For each layer of the original project a corresponding resource was created in it.
You can work with the uploaded vector and raster layers independently from the Web Map — modify the data, publish it using different protocols etc.

What if you’d like to edit the uploaded layers in QGIS? Let’s see how to do it.
## Connect to Web Map from QGIS
In QGIS close the project (Project - Close). Imagine that you work from another computer, another QGIS instance. Keep NextGIS Connect panel open (reopen it if it’s closed).
In the NextGIS Connect panel, find the Web Map resource *Sursee - webmap*, right-click on it to open the context menu, and select  **Add to QGIS**.

QGIS rebuilds the Web Map content locally, downloading all relevant layers and styles and arranging them to match the original structure.
What you get is basically the initial project fully reconstructed from the NextGIS Web.

Note that in the Layers panel vector layers have special marks to the right of their names: .

They are now linked to the server storage. If the data is updated on the server side, Connect synchronizes the local layer in QGIS. If the synched layer is updated in QGIS, Connect communicates it to the server and updates the data on the server.
One of the great uses of it is updating styles on the Web Map.
## Modify layer styles on the Web Map from QGIS
Let’s make railroads more bright and visible on our Web Map.
In QGIS, find the *Railroad network* layer in the Layers panel. Open the context menu of the “rail” symbol category. On the palette click on the color ring to select the red color. Click on the empty part of the panel to close the dialog.

Then find and select the *Railroad network* layer in the NextGIS Connect panel.

Go back to the Layers panel, open the context menu of the “Railroad network” layer and click **NextGIS Connect –> Update layer style**.

Go back to the web browser with the Web Map opened (reopen it from NextGIS Connect panel if it is closed). You’ll find that railroads have changed their color to red.

You can modify raster styles as well.
## Update raster layer style on a Web Map
In QGIS, activate *Sentinel 2 imagery* layer. It is a 4 band satellite dataset, currently configured to display in natural colors.

Open its context menu and go to the “Properties”.

In the Properties, go to the Symbology tab, and change `Band 3` to `Band 4` in the *Red band* selector. The click **OK**.

We’ve just replaced the Red reflectance data to the Near-InfraRed reflectance data, so the raster visualization has changed significantly.

Open the Web Map and activate the “Sentinel 2 imagery” layer there. It still has its original appearance.

Return to QGIS, select the *Sentinel 2 imagery* layer in the NextGIS Connect panel.

Then open the context menu of the layer and click **NextGIS Connect –> Update layer style**.

Open the Web Map again — layer style has changed.

NextGIS Web can handle multiband rasters with QGIS styles of any complexity.
## Edit data from QGIS and explore results on the Web Map
Return to QGIS, in the Layers panel select *Points of interest* layer, open its context menu and enable  Editing mode. Since this layer was added from NextGIS Connect, it is linked with Web GIS, so the edits are synchronized with the server.

Enable Digitizing toolbar and activate the  **Add point feature** tool.

Let’s place another bbq spot in the forest. Left-click on a suitable place on the map, then enter one attribute value, AMENITY = `bbq`. Then click **OK**.

Click on  to exit the Editing mode and select **Save** in the dialog to save the changes.

After you exit the Editing mode synchronization starts automatically. The new feature is sent to the server. Return to the Web Map to view it.

Users can connect to the same server data from multiple QGIS instances and edit the data simultaneously. Our stack provides a seamless, ready-to-go solution to enable team digitizing and data editing in QGIS.
# tutorial_qgis.html.md
# Tutorial: Seamless QGIS Integration
NextGIS Web is a data-centric server GIS, that allows you to store, manage and publish spatial data in a flexible and effective way. It has a deep integration with QGIS, the leading free and open-source GIS software.
Integration covers publishing QGIS projects as Web Maps, connecting to Web Maps as QGIS projects, data syncing and collaborative editing from several QGIS instances.
In this step-by-step tutorial you will learn how to publish your QGIS project to the web, then connect to it from another QGIS instance, manage styles at Web Maps from QGIS and edit data from QGIS directly at the server. Register a free cloud account and try it right away!
[`Download tutorial data`](https://nextgis.com/tutorials/seamless_qgis_integration.zip) (source: [OpenStreetMap](https://www.openstreetmap.org/), [data.nextgis.com](http://data.nextgis.com), [Copernicus](https://browser.dataspace.copernicus.eu/))
#### SEE ALSO
[Store, manage and publish your spatial data](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html)
Publish your QGIS project online
1. [Create free account and Web GIS](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#account)
2. [Open and explore QGIS project](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#project)
3. [Install NextGIS Connect plugin](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#install)
4. [Create a connection](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#connection)
5. [Publish QGIS project to NextGIS Web](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#publish)
Result: [Explore the Web Map and resources](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#webmap)
Use QGIS to edit data stored in Web GIS
1. [Connect to Web Map from QGIS](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#download)
2. [Update layer styles at the Web Map from QGIS](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#vector_style)
3. [Update raster layer style on a Web Map](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#raster_style)
4. [Edit data from QGIS and explore results at the Web Map](https://docs.nextgis.com/docs_ngcom/source/tutorial_qgis.html#edit_data)
## Step 1/5 Create free account and Web GIS
Go to my.nextgis.com, click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

Copy the address of the created Web GIS. In this example: `https://ngw-quickstart.nextgis.com`. You’ll need it later to create a connection.
## Step 2/5 Open and explore QGIS project
[Download the tutorial data](https://nextgis.com/tutorials/seamless_qgis_integration.zip) and unzip the archive.
Click on the file called `Sursee.qgz` to open it in QGIS.
#### NOTE
If you don’t have QGIS yet, [download](https://qgis.org/download/) and install it.
This is a typical QGIS project with raster and vector layers, a couple of basemaps and rich scale-dependent styles set up with exclickions. Points of interest are styled with advanced “Point Cluster” renderer using dynamic cluster symbol size. There are also embeded SVG icons in the “Road network” layer.

Zoom in to explore multiscale styling.

## Step 3/5 Install NextGIS Connect plugin
Go to the “Plugins” — “Manage and Install Plugins” menu

Go to the “All” tab and find a plugin named NextGIS Connect. Use a search bar at the top of the interface for faster access. Click the **Install Plugin** button.

After installation NextGIS Connect is available in the “Internet” menu and as a toolbar icon: . When NextGIS Connect is active, the side panel is visible.

Go to the plugin settings, using  icon. This is a place for setting up everything related to QGIS–NextGIS Web integration. First, let’s create a connection.
## Step 4/5 Create a connection
To establish a link between your QGIS app and a Web GIS, you need to create a connection.
Go to the [Web GIS page](https://my.nextgis.com/webgis/) of your NextGIS ID account and copy the link to your Web GIS (see `tutorial_my_wg_pic`). In this example the link is: `https://ngw-quickstart.nextgis.com`.
In QGIS open the NG Connect settings and click on the **New** button in the “Connections” group.

Enter the Web GIS address to the URL field, then click  to create a new Authentication configuration.

In the new dialog enter the email and password you used to register at my.nextgis.com at step 1, and click the **Save** button.

Click the **Test connection** button to ensure that you entered all the data correctly. Then click the **Save** button.

Exit settings by clicking the **OK** button in the bottom of the page.
Now in the NextGIS Connect panel you can see the resource tree of your Web GIS.

Using this panel you could upload local data to Web GIS, connect remote layers and maps to QGIS, update styles, create services and many more. It also provides a simple way to upload an entire QGIS project as a Web Map.
## Step 5/5 Publish QGIS project to NextGIS Web
In NextGIS Connect panel select the *Main resource group* folder, then open dropdown menu with  icon and select **Upload all**.

Enter a name for the project. In this example, it is `Sursee`.A folder with this name is created in Web GIS, and all the project data is uploaded there.

The upload starts. You can track the progress by checking the status message.

By default, once the Web Map is successfully published, it opens automatically in your browser. Also, you can open it from the Connect panel. Right-click on the Web Map and select “Open in browser” in the context menu.
Note that all the layers of the project are now visible in the NextGIS Connect panel.

Now you can explore the Web Map. Proceed to step 6 to learn how to connect to an existing Web Map in QGIS.
### Explore the Web Map and resources
A Web Map has been created from the project. It looks exactly the same as the original QGIS project, because NextGIS Web uses QGIS styles as primary way to define layer styles.

You can enable and disable layers and categories within layers. Web Map has its own URL, so you can easily share it. Play with the Web Map interface. Learn more about it: [https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html)
Click the  icon at the top left corner to view the main interface with the resource list.

Open the Sursee folder. For each layer of the original project a corresponding resource was created in it.
You can work with the uploaded vector and raster layers independently from the Web Map — modify the data, publish it using different protocols etc.

What if you’d like to edit the uploaded layers in QGIS? Let’s see how to do it.
## Connect to Web Map from QGIS
In QGIS close the project (Project - Close). Imagine that you work from another computer, another QGIS instance. Keep NextGIS Connect panel open (reopen it if it’s closed).
In the NextGIS Connect panel, find the Web Map resource *Sursee - webmap*, right-click on it to open the context menu, and select  **Add to QGIS**.

QGIS rebuilds the Web Map content locally, downloading all relevant layers and styles and arranging them to match the original structure.
What you get is basically the initial project fully reconstructed from the NextGIS Web.

Note that in the Layers panel vector layers have special marks to the right of their names: .

They are now linked to the server storage. If the data is updated on the server side, Connect synchronizes the local layer in QGIS. If the synched layer is updated in QGIS, Connect communicates it to the server and updates the data on the server.
One of the great uses of it is updating styles on the Web Map.
## Modify layer styles on the Web Map from QGIS
Let’s make railroads more bright and visible on our Web Map.
In QGIS, find the *Railroad network* layer in the Layers panel. Open the context menu of the “rail” symbol category. On the palette click on the color ring to select the red color. Click on the empty part of the panel to close the dialog.

Then find and select the *Railroad network* layer in the NextGIS Connect panel.

Go back to the Layers panel, open the context menu of the “Railroad network” layer and click **NextGIS Connect –> Update layer style**.

Go back to the web browser with the Web Map opened (reopen it from NextGIS Connect panel if it is closed). You’ll find that railroads have changed their color to red.

You can modify raster styles as well.
## Update raster layer style on a Web Map
In QGIS, activate *Sentinel 2 imagery* layer. It is a 4 band satellite dataset, currently configured to display in natural colors.

Open its context menu and go to the “Properties”.

In the Properties, go to the Symbology tab, and change `Band 3` to `Band 4` in the *Red band* selector. The click **OK**.

We’ve just replaced the Red reflectance data to the Near-InfraRed reflectance data, so the raster visualization has changed significantly.

Open the Web Map and activate the “Sentinel 2 imagery” layer there. It still has its original appearance.

Return to QGIS, select the *Sentinel 2 imagery* layer in the NextGIS Connect panel.

Then open the context menu of the layer and click **NextGIS Connect –> Update layer style**.

Open the Web Map again — layer style has changed.

NextGIS Web can handle multiband rasters with QGIS styles of any complexity.
## Edit data from QGIS and explore results on the Web Map
Return to QGIS, in the Layers panel select *Points of interest* layer, open its context menu and enable  Editing mode. Since this layer was added from NextGIS Connect, it is linked with Web GIS, so the edits are synchronized with the server.

Enable Digitizing toolbar and activate the  **Add point feature** tool.

Let’s place another bbq spot in the forest. Left-click on a suitable place on the map, then enter one attribute value, AMENITY = `bbq`. Then click **OK**.

Click on  to exit the Editing mode and select **Save** in the dialog to save the changes.

After you exit the Editing mode synchronization starts automatically. The new feature is sent to the server. Return to the Web Map to view it.

Users can connect to the same server data from multiple QGIS instances and edit the data simultaneously. Our stack provides a seamless, ready-to-go solution to enable team digitizing and data editing in QGIS.
# tutorial_track.html.md
# Track Asset and Team Locations in Real Time
NextGIS Web is a data-centric server GIS that allows you to store, manage and publish spatial data in a flexible and effective way. It has an integrated mobile data collection subsystem, that you can use to organize collaborative field work and track assets and teams in real time as well as simply record your own movements.
In this step-by-step tutorial you will learn how to start collecting GPS tracks and monitor them on a real-time map!
An Android smartphone is required to work with mobile application.
Basic:
* Step 1 [Create free account and Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#account)
* Step 2 [Install and set up NextGIS Tracker on your Android device](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#install)
* Step 3 [Start collecting locations](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#record)
* Step 4 [View the current tracker location and recorded track on a Web Map](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#position)
Advanced:
* [Create reports](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#report)
* [Export GPX file](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#export)
* [Manage trackers](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#manage)
## Step 1/4 Create free account and Web GIS
Go to [my.nextgis.com](https://my.nextgis.com/), click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

## Step 2/4 Install and set up NextGIS Tracker on your Android device
Install NextGIS Tracker application on your Android device. It could be found in Google Play.
Run the application. Allow access to your device’s location.
You can start recording local tracks immediately and then share them as GPX files. But we want to sync the tracks with Web GIS.
Tap the synchronization switch in the top right corner of the interface:

On the next screen enter your Web GIS name (created at step 1, in this example ngw-quickstart.nextgis.com), then the email and password you used to create NextGIS ID.

Tap on the green icon in the bottom corner to save the changes.
Active synchronization is indicated by the blue color of the switch as well as the  symbol next to it. Now the App sends all collected GPS tracks to the Web GIS.

## Step 3/4 Start collecting locations as you go for a short walk
To start recording your first track, tap on the green “Start” button in the bottom right corner.
Tha application would ask you to allow allow the app to access location continuously even when the app is not in use. It is important for so that App is able to record tracks.

Go to your device Settings and select “Allow all the time” for the Tracker app. The dialog may vary depending on Android version.

Now when you return to the app there’s a new status, “Collecting tracking data and syncing…”.

Take a short walk to collect some locations!
You monitor your movements in real time using Web Map.
## Step 4/4 View the current tracker location and recorded track on a Web Map
Open your Web GIS in a browser by clicking on the highlighted link in [your account](https://my.nextgis.com/webgis/) or by typing it directly in the address bar. You’ll see the main interface of your Web GIS.

In NextGIS Web everything is a resource — directories, layers, Web Maps, connections to services and databases. Resources are organized as files at your computer — in a tree.
You already have a couple of resources:
* Main Web Map - a default resource created with the new Web GIS;
* “TrackersGroup” - a resource created by the NextGIS Tracker application when you set up the synchronization. You also can manage trackers manually.
Click on the  icon to open the “Main Web Map” resource in the display mode:

This Web Map is empty - no layers, just a default basemap. But in the left panel a Trackers menu is available, activate it.

By default, you can explore data collected by your Tracker app on every Web Map created in your Web GIS. It could be disabled in Web Map settings.
The Trackers panel lists all connected tracker devices. You have only one tracker connected to Web GIS right now, click the  “Last known point” button.

Last recorded location would be shown on the Web Map. If the device with the tracker moves, you see it in real-time.

By clicking other buttons you could view track line and track points recorded within the selected time range.

Hover over track points to see detailed information on the date, time, speed, direction and other parameters.

After you’ve collected some tracks, you can analyze them by [creating reports](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#report) or [export the tracks](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#export) in GPX format to share and create backup.
If you have Premium subscription, you can have [multiple devices connected](https://docs.nextgis.com/docs_howto/source/tutorial_track.html#manage) to your Web GIS as trackers.
## Create reports
On the Trackers panel click on the “Reports” icon:

Here you can create different types of reports.
In the “Report type” dropdown menu select **Average speed**. Then set the time range covering your today’s walk. In the “Group by” field select grouping by hours.
Tick the only available tracker, then click **Create report** button.

You’ve got a fast calculation of average speed.
## Export GPX file
To export your track as file, go to the Reports page (see `trackers_reports_pic`).
Then in the “Report type” field select **GPX file**.
After clicking the **Create report** button you get the “Download GPX file” link. This GPX file could be used in QGIS or other applications.
## Manage trackers
When you enable Web GIS syncing in NextGIS Tracker app, it sets up everything on the Web GIS side automatically, as shown in this tutorial.
But also you can create and manage trackers manually, creating a [Trackers group resource and Tracker resources](https://docs.nextgis.com/docs_ngcom/source/tracking.html#tracking-create) within it. It allows to have hundreds of trackers connected to Web GIS in a production environment.
#### SEE ALSO
Other NextGIS mobile apps also support tracking and Web GIS synchronization. More details:
* [NextGIS Mobile](https://docs.nextgis.com/docs_ngmobile/source/index.html)
* [NextGIS Collector](https://docs.nextgis.com/docs_collector/source/index.html)
# tutorial_webgis.html.md
# Tutorial: Store, manage and publish your spatial data
NextGIS Web is a data-centric server GIS, allowing you to store, manage and publish spatial data in a flexible and effective way. In this step-by-step tutorial you will learn how to convert your GIS files into shareable Web Maps, tile and OGC services, as well as to create and manage data directly on the server. Register a free cloud account and try it right away!
[`Download tutorial data`](https://nextgis.com/tutorials/store_manage_publish_geospatial_data.zip) (source: [Wrocław Spatial Information System](https://geoportal.wroclaw.pl/))
Basic
1. [Create Account and Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-1-6-create-free-account-and-web-gis)
2. [Create Resource group](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-2-6-access-your-web-gis-and-create-resource-group)
3. [Upload vector layer](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-3-6-upload-and-publish-vector-layer)
4. [Upload style](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-4-6-upload-a-style)
5. [Upload raster layer](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-5-6-upload-and-publish-raster-layer)
6. [Publish Web Map](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-6-6-publish-web-map)
Advanced
1. [Add external WMS layer to Web Map](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#add-external-wms-layer-to-web-map)
2. [Add basemaps](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#add-basemaps-to-web-map)
3. [Create vector layer inside Web GIS](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#create-vector-layer-inside-web-gis)
4. [Edit vector layer on Web Map, add file attachments](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#edit-vector-layer-on-a-web-map-add-file-attachments)
5. [Publish OGC API — Features service](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#ogc-api)
6. [What next](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#what-next)
## Step 1/6 Create free account and Web GIS
Go to my.nextgis.com, click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

## Step 2/6 Access your Web GIS and create resource group
Click on the Web GIS link or type it into your browser.
You’ll see the main interface of your Web GIS.

In NextGIS Web everything is a resource — layers, Web Maps, folders (groups), connections to services and databases. Resources are organized as files at your computer — in a tree.
Let’s create our first resource, a folder or *resource group* named Wroclaw. To do that, click the blue **Create resource** button on the top of the page.

When you click **Create resource**, a window appears showing all available options of what could you create in the current context. Select **Resource group**.

The resource creation window consists of several tabs, in this case we need to set only the name `Wroclaw` on the “Resource” tab.

Click **Create** and you’ll be redirected to the page of the new resource.

The URL in your browser is the path to the resource, and the numbers at the end of the URL are the resource ID.
*Wroclaw* is a child for the *Main resource group* folder where we created it. The parent resource is shown above the resource name.
Now you can upload data to this folder.
## Step 3/6 Upload and publish vector layer
[Download the tutorial data](https://nextgis.com/tutorials/store_manage_publish_geospatial_data.zip) and unzip the archive.
Inside the *Wroclaw* folder, click **Create resource** and select the **Vector layer** type of resource.

You’ll see the interface for resource creation with several tabs.

The default tab is called **Vector layer**. Add the file called `bicycle_roads.gpkg` from the tutorial dataset to the field **Select a dataset** by drag-and-drop or click on the field and then select the file.
After the upload completes, the file size is displayed.
Switch to the **Resource tab** and enter the Dislpay name for the new layer, for example, `Bicycle roads`. Then click the **Create** button.

The vector layer is created and you are redirected to its page. The numbers at the end of the URL represent the ID of the layer.
This page has the information about the layer:
* Its place in the resource tree (Main resource group / Wroclaw);
* Basic metadata (geometry type, feature count etc.);
* List of fields a.k.a. attribute structure;

In the **External access** section you’ll find an automatically generated URL that allows to access the layer via MVT vector tiles. Right away you can connect this data to a Web app or add it to QGIS using this link. [More on MVT tiles](https://docs.nextgis.com/docs_ngweb/source/services.html#mvt-vector-tiles).
To view the data open the Feature table by clicking  **Table** in the menu on the right.

Select any feature and click **Open** to view it.
In the opened window you see all the properties of the selected feature, including its attributes, geometry and a map representation on top of the default basemap.

The feature table allows you to inspect, edit and manage vector layer features as independent database records, without using maps or other applications. ([More on how to do it](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-blank))
## Step 4/6 Upload a style
If you want to generate **TMS tiles** or **add the layer to a Web Map**, you need to define its appearance a.k.a. a **style**. You can click **Create default QGIS style**, but for this layer we have a special file that determins colors and structures of the lines depending on the attribute values.
On the layer page click **Create resource** button. You’ll see a different set of available resources, because a vector layer could only be a parent for styles and forms. We use QGIS styles as the primary way to define data appearance. Select **QGIS vector style**.

Upload the file called `bicycle_roads.qml` from the tutorial dataset. Then click the **Create** button.

The vector style is created and you are redirected to its page. Click **Preview** in the menu on the right to see how the style looks.
In the **External access** section you’ll find an auto-generated URL you can use to connect this styled data as a Tiled Map Service, for example, add it to QGIS. [More on TMS](https://docs.nextgis.com/docs_ngweb/source/services.html#tms-service)
Now you can upload another type of layer or skip to the [Web Map creation](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#step-6-6-publish-web-map).
## Step 5/6 Upload and publish raster layer
Return to the *Wroclaw* resource group by clicking its name at the current path.

Click the **Create resource** button and select **Raster layer**.

On the **Raster layer** tab drag and drop the file called `plan.tif` from the tutorial dataset or click **Select the dataset** and select the file. Then click the **Create** button.

The raster layer is created and you are redirected to its page. Here you can see:
* Its place in the resource tree (Main resource group / Wroclaw);
* Basic metadata (bands, dimensions etc.);

In the **External access** section you’ll find an auto-generated **Cloud Optimized GeoTIFF** access URL to this data. Right away you can connect this data to external resources using this link.
You can style rasters with QGIS styles by creating child resources. To style RGB(A) rasters, however, you can simply click **Create default QGIS style**. Let’s do it. The default raster style is created and you are redirected to its page.

**Raster tiles (TMS)** access URL to this data is automatically generated. Right away you can use this link to connect this data as styled raster tiles to external resources.
You could also click **Preview** in the right menu and explore the uploaded raster.

Now let’s create a Web Map with the data we’ve just uploaded.
## Step 6/6 Publish Web Map
Now that we have a couple of styled layers we are ready to publish our first Web Map. Return to the *Wroclaw* resource group and create a new resource — **Web Map**.

There are a lot of things that could be set for a Web Map. On the “Resource” tab enter the name for the map, e.g. `Wroclaw`.

On the **Layers** tab you define the content of this Web Map. Click the  **Layer** button. What is added to the map is the visual representation of the data, so you need to select styles, not layers. That is why checkboxes near layer names are not active. You could enter the layer and select its child style, or simply click  **Select first eligible child resource** on the right side of the layer to select it. Select both *“Bicycle roads”* and *“plan”* layers.

After that you can click on the layer to edit its properties.

Switch to the **Settings** tab. Find the “Initial extent” row and click the **From layer** button. Then select *Bicycle roads* layer and click the **Pick selected** button. Now the map will open viewing the area of this layer.

Click the **Create** button to finalize Web Map creation.
Web Map resources have a special **Display** mode. It could be accessed from the right panel of the resource interface.

Or, if you return to the *Wroclaw* resource group, click the  map icon to the right of the Web Map resource name.
When you click  **Display**, an interactive Web Map opens. Each map has its own display URL and a lot of tools to explore and manage the data.

Tabs on the left allow to manage layers, identify, find and edit features, share or print the map. See documentation for more information about Web Map tools and panels: [https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html)
You can create as many Web Maps as you need, combining available layers and their styles.
Let’s explore what else you can do:
* [Add data published on external servers](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#add-external-wms-layer-to-web-map);
* [Change basemap](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#add-basemaps-to-web-map);
* [Create a vector layer from skratch](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#create-vector-layer-inside-web-gis);
* [Edit vector features on a Web Map and attach files](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#edit-vector-layer-on-a-web-map-add-file-attachments);
* [Publish OGC API — Features service](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#publish-ogc-api-features-service).
## Add external WMS layer to Web Map
You can connect external [WMS](../../glossary.md#term-WMS), [WFS](../../glossary.md#term-WFS), [TMS](../../glossary.md#term-TMS) and [PostGIS](../../glossary.md#term-PostGIS) data to NextGIS Web. Let’s explore it with the example of Wroclaw orthophoto serving as a public WMS service.
Return to the *Wroclaw* resource group and create a new resource — **WMS connection**.

On the resource tab set the name — `Wroclaw orthophoto service`:

On the WMS Connection tab set the URL: [https://gis1.um.wroc.pl/arcgis/services/ogc/OGC_ortofoto_2024/MapServer/WMSServer](https://gis1.um.wroc.pl/arcgis/services/ogc/OGC_ortofoto_2024/MapServer/WMSServer)

Then click the **Create** button.
Return to the *Wroclaw* group again and create another resource — **WMS layer**.

On the Resource tab set the name — `Wroclaw orthophoto layer`:

On the **WMS Layer** tab click the *“WMS Connection”* field and select **Wroclaw orthophoto service** resource, then click **Pick selected**.

In the *“Image format”* dropdown list select **image/png**, and in the *WMS layers* dropdown list select **Ortofotomapa 2024 - GUGiK**.

Then click the **Create** button. WMS connection and layer are created.
In the **External access** section you’ll find an auto-generated URL that can be used to connect the data as **raster tiles**. Right away you can add this data to a Web app or a desktop app such as QGIS. Your Web GIS serves as a proxy for the WMS service.

To **add the WMS layer to the Web Map** return to the *Wroclaw* resource group and click the  pencil icon next to the Web Map.

On the **Layers** tab click  **Layer** button, select *“Wroclaw orthophoto layer”* and click **Pick selected** button. WMS layer is now added to the Web Map.

Save the map and open it in display mode. You’ll see that a detailed orthophotomap from external source is now underlaying the previously uploaded data.

## Add basemaps to Web Map
By default Web Maps use the standard OpenStreetMap basemap. But you can connect other basemaps and use them with your Web Maps.
Return to the *Wroclaw* resource group and create a new resource — **Basemap**.

Here you can use our public crowdsourced collection of map services, qms.nextgis.com. Start entering the name of the basemap in the **Pick from QMS** field and select what you need from search results.

All other fields will be filled automatically, also a preview will be available to explore the selected basemap.
An alternative way to create a basemap is to enter the URL for the **XYZ tiles** manually.
Use the slider in the top right corner to compare this basemap to the default OSM.

On the **Resource** tab set the name of the basemap.

Click the **Create** button.
To add the newly created basemap to the Web Map return to the *Wroclaw* resource group and  edit the Web Map resource.

On the **Basemaps** tab click  **Add** button and select the created Basemap resource. Then click **Pick selected** and save the Web Map.

Open the Web Map in  display mode. Now the new basemap is used.

## Create vector layer inside Web GIS
It is possible not only to upload data from files, but also to create datasets right inside the Web GIS.
Return to the *Wroclaw* resource group and create a new resource — **Vector layer**.

Then open the dropdown menu on the “Vector layer” tab and select **Create empty layer**.

In the changed interface select the **Point** geometry type.

On the **Resource** tab set the name for the new layer, e.g. `Bicycle parkings`, and click the **Create** button.

The vector layer is created and you are redirected to its page. Now you need to add attributes to it. Click  **Update** in the right menu.

Here, on the **Fields** tab, click the  **Add** button.
Set up the properties of the new field in the side panel:
* Display name: `Number of parking spaces`,
* Keyname: `parking_spaces`,
* Type: INTEGER.

Then click the **Save** button.
Now it’s time to create a style for the new layer. On the vector layer resource page click **Create resource** and select **QGIS vector style**.
On the **QGIS Style** tab open the dropdown menu and select **User-defined style**.

Simple style constructor is available here. We recommend using QGIS to create styles, but for quick tasks this built-in constructor could be useful. Set up a blue circle with size 12 and white stroke with 1 width. Then click the **Create** button.

A new vector layer is created inside Web GIS.
You can now add it to Web Maps and [publish it via OGC services](https://docs.nextgis.com/docs_howto/source/tutorial_webgis.html#publish-ogc-api-features-service).
But first we’ll add some features to the newly created layer using Web interface.
## Edit vector layer on a Web Map, add file attachments
Return to the *Wroclaw* resource group and enter the  Update mode of the Web Map.

First, go to the **Layers** tab, click the  **Layer** button and add *Bicycle parkings* layer by clicking  **Select first eligible child resource** on the right side of the layer. Then click **Pick selected**, and drag *Bicycle parkings* layers to the top of the layers list.

Next, go to the **Settings** tab, find the **Layers editing** dropdown menu and select **Enable**. Save the changes.

You have just added the new vector layer to the map and activated layer editing. Now go to the  “Display” mode of the map.

Zoom in to a place on the map where you would like to place a new bicycle parking. Next, open the layer’s context menu by clicking the three dots to the right of its name, and select  **Edit**.

New tools have appeared on the map.
Select  tool and click on the desired place.

Pop-up modal window appears, where you can set attribute values, e.g. `15` as the number of parking spaces.

There are also two additional tabs available. On the **Description** tab you could enter any rich-text with images to describe the feature. On the **Attachments** tab you could attach an unlimited number of photos or any sort of files to the feature. Change tab to the “Attachments”, click the  **Upload** button and select `Bicycle_parking.jpg` and `WRM_Regulations.pdf` files from the tutorial dataset.

Click the **OK** button to save the feature.
Then go to the context menu of *Bicycle parkings* layer again and click **Stop editing**.

Confirm the edits by clicking the **Save** button in the pop-up dialog.

A new feature is created.
Click on the point symbol on the map. An identification panel will appear, where you can explore the attributes and attachments of the feature.

Click on the attached photos and panoramas to view them.
Now that we have data in this layer, let’s publish it via OGC API Features.
## Publish OGC API — Features service
We’ll publish this layer with OGC API — Features protocol so that it can be edited in external software. Go back to the *Wroclaw* resource group and create a new resource, **OGC API Features service**.

Service creation is a simple process. All you need is to select a layer.
On the **OGC API Features service** tab click the  **Add** button and select the *Bicycle parkings* layer, then click the **Pick selected** button.

By default the resource would be called just “OGC API Features service”. To set a custom display name go to the **Resource** tab and enter `Bicycle parkings (features service)`. Then click the **Create** button.
#### NOTE
The name “Bicycle parkings” is already used for the vector layer resource, so you need to add “features service” at the end.

The service is created and you are redirected to its page. In the **External access** section you can see the endpoint of the published service. Copy the URL to use it in external applications.

## What next
Congratulations! You’ve completed the tutorial and learned the basics of geospatial data management in NextGIS Web.
There are still a lot of things to explore. You can learn to:
* manage users and permissions, allowing to set up unique access combinations for each layer, service and map;
* manage coordinate reference systems;
* manage data directly from QGIS, including project publishing, style management and collaborative editing;
* and many more.
Try other tutorials or dive into documentation to learn more.
# tutorial_webgis.html.md
# Tutorial: Store, manage and publish your spatial data
NextGIS Web is a data-centric server GIS, allowing you to store, manage and publish spatial data in a flexible and effective way. In this step-by-step tutorial you will learn how to convert your GIS files into shareable Web Maps, tile and OGC services, as well as to create and manage data directly on the server. Register a free cloud account and try it right away!
[`Download tutorial data`](https://nextgis.com/tutorials/store_manage_publish_geospatial_data.zip) (source: [Wrocław Spatial Information System](https://geoportal.wroclaw.pl/))
Basic
1. [Create Account and Web GIS](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-1-6-create-free-account-and-web-gis)
2. [Create Resource group](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-2-6-access-your-web-gis-and-create-resource-group)
3. [Upload vector layer](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-3-6-upload-and-publish-vector-layer)
4. [Upload style](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-4-6-upload-a-style)
5. [Upload raster layer](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-5-6-upload-and-publish-raster-layer)
6. [Publish Web Map](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-6-6-publish-web-map)
Advanced
1. [Add external WMS layer to Web Map](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#add-external-wms-layer-to-web-map)
2. [Add basemaps](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#add-basemaps-to-web-map)
3. [Create vector layer inside Web GIS](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#create-vector-layer-inside-web-gis)
4. [Edit vector layer on Web Map, add file attachments](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#edit-vector-layer-on-a-web-map-add-file-attachments)
5. [Publish OGC API — Features service](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#ogc-api)
6. [What next](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#what-next)
## Step 1/6 Create free account and Web GIS
Go to my.nextgis.com, click the **Create Account** button and sign up using your email address.
After registration your account page would appear. Select the **Web GIS** menu on the left, come up with a name (ngw-quickstart.nextgis.com in this example) and select the nearest Data center location (DE Falkenstein in this example). Then click **Create Web GIS**.

When the creation process is complete, the contents of the page will change. Direct link to your new Web GIS will appear.

## Step 2/6 Access your Web GIS and create resource group
Click on the Web GIS link or type it into your browser.
You’ll see the main interface of your Web GIS.

In NextGIS Web everything is a resource — layers, Web Maps, folders (groups), connections to services and databases. Resources are organized as files at your computer — in a tree.
Let’s create our first resource, a folder or *resource group* named Wroclaw. To do that, click the blue **Create resource** button on the top of the page.

When you click **Create resource**, a window appears showing all available options of what could you create in the current context. Select **Resource group**.

The resource creation window consists of several tabs, in this case we need to set only the name `Wroclaw` on the “Resource” tab.

Click **Create** and you’ll be redirected to the page of the new resource.

The URL in your browser is the path to the resource, and the numbers at the end of the URL are the resource ID.
*Wroclaw* is a child for the *Main resource group* folder where we created it. The parent resource is shown above the resource name.
Now you can upload data to this folder.
## Step 3/6 Upload and publish vector layer
[Download the tutorial data](https://nextgis.com/tutorials/store_manage_publish_geospatial_data.zip) and unzip the archive.
Inside the *Wroclaw* folder, click **Create resource** and select the **Vector layer** type of resource.

You’ll see the interface for resource creation with several tabs.

The default tab is called **Vector layer**. Add the file called `bicycle_roads.gpkg` from the tutorial dataset to the field **Select a dataset** by drag-and-drop or click on the field and then select the file.
After the upload completes, the file size is displayed.
Switch to the **Resource tab** and enter the Dislpay name for the new layer, for example, `Bicycle roads`. Then click the **Create** button.

The vector layer is created and you are redirected to its page. The numbers at the end of the URL represent the ID of the layer.
This page has the information about the layer:
* Its place in the resource tree (Main resource group / Wroclaw);
* Basic metadata (geometry type, feature count etc.);
* List of fields a.k.a. attribute structure;

In the **External access** section you’ll find an automatically generated URL that allows to access the layer via MVT vector tiles. Right away you can connect this data to a Web app or add it to QGIS using this link. [More on MVT tiles](https://docs.nextgis.com/docs_ngweb/source/external.html).
To view the data open the Feature table by clicking  **Table** in the menu on the right.

Select any feature and click **Open** to view it.
In the opened window you see all the properties of the selected feature, including its attributes, geometry and a map representation on top of the default basemap.

The feature table allows you to inspect, edit and manage vector layer features as independent database records, without using maps or other applications. ([More on how to do it](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-blank))
## Step 4/6 Upload a style
If you want to generate **TMS tiles** or **add the layer to a Web Map**, you need to define its appearance a.k.a. a **style**. You can click **Create default QGIS style**, but for this layer we have a special file that determins colors and structures of the lines depending on the attribute values.
On the layer page click **Create resource** button. You’ll see a different set of available resources, because a vector layer could only be a parent for styles and forms. We use QGIS styles as the primary way to define data appearance. Select **QGIS vector style**.

Upload the file called `bicycle_roads.qml` from the tutorial dataset. Then click the **Create** button.

The vector style is created and you are redirected to its page. Click **Preview** in the menu on the right to see how the style looks.
In the **External access** section you’ll find an auto-generated URL you can use to connect this styled data as a Tiled Map Service, for example, add it to QGIS. [More on TMS](https://docs.nextgis.com/docs_ngweb/source/external.html#tms)
Now you can upload another type of layer or skip to the [Web Map creation](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#step-6-6-publish-web-map).
## Step 5/6 Upload and publish raster layer
Return to the *Wroclaw* resource group by clicking its name at the current path.

Click the **Create resource** button and select **Raster layer**.

On the **Raster layer** tab drag and drop the file called `plan.tif` from the tutorial dataset or click **Select the dataset** and select the file. Then click the **Create** button.

The raster layer is created and you are redirected to its page. Here you can see:
* Its place in the resource tree (Main resource group / Wroclaw);
* Basic metadata (bands, dimensions etc.);

In the **External access** section you’ll find an auto-generated **Cloud Optimized GeoTIFF** access URL to this data. Right away you can connect this data to external resources using this link.
You can style rasters with QGIS styles by creating child resources. To style RGB(A) rasters, however, you can simply click **Create default QGIS style**. Let’s do it. The default raster style is created and you are redirected to its page.

**Raster tiles (TMS)** access URL to this data is automatically generated. Right away you can use this link to connect this data as styled raster tiles to external resources.
You could also click **Preview** in the right menu and explore the uploaded raster.

Now let’s create a Web Map with the data we’ve just uploaded.
## Step 6/6 Publish Web Map
Now that we have a couple of styled layers we are ready to publish our first Web Map. Return to the *Wroclaw* resource group and create a new resource — **Web Map**.

There are a lot of things that could be set for a Web Map. On the “Resource” tab enter the name for the map, e.g. `Wroclaw`.

On the **Layers** tab you define the content of this Web Map. Click the  **Layer** button. What is added to the map is the visual representation of the data, so you need to select styles, not layers. That is why checkboxes near layer names are not active. You could enter the layer and select its child style, or simply click  **Select first eligible child resource** on the right side of the layer to select it. Select both *“Bicycle roads”* and *“plan”* layers.

After that you can click on the layer to edit its properties.

Switch to the **Settings** tab. Find the “Initial extent” row and click the **From layer** button. Then select *Bicycle roads* layer and click the **Pick selected** button. Now the map will open viewing the area of this layer.

Click the **Create** button to finalize Web Map creation.
Web Map resources have a special **Display** mode. It could be accessed from the right panel of the resource interface.

Or, if you return to the *Wroclaw* resource group, click the  map icon to the right of the Web Map resource name.
When you click  **Display**, an interactive Web Map opens. Each map has its own display URL and a lot of tools to explore and manage the data.

Tabs on the left allow to manage layers, identify, find and edit features, share or print the map. See documentation for more information about Web Map tools and panels: [https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html)
You can create as many Web Maps as you need, combining available layers and their styles.
Let’s explore what else you can do:
* [Add data published on external servers](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#add-external-wms-layer-to-web-map);
* [Change basemap](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#add-basemaps-to-web-map);
* [Create a vector layer from skratch](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#create-vector-layer-inside-web-gis);
* [Edit vector features on a Web Map and attach files](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#edit-vector-layer-on-a-web-map-add-file-attachments);
* [Publish OGC API — Features service](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#publish-ogc-api-features-service).
## Add external WMS layer to Web Map
You can connect external [WMS](../../glossary.md#term-WMS), [WFS](../../glossary.md#term-WFS), [TMS](../../glossary.md#term-TMS) and [PostGIS](../../glossary.md#term-PostGIS) data to NextGIS Web. Let’s explore it with the example of Wroclaw orthophoto serving as a public WMS service.
Return to the *Wroclaw* resource group and create a new resource — **WMS connection**.

On the resource tab set the name — `Wroclaw orthophoto service`:

On the WMS Connection tab set the URL: [https://gis1.um.wroc.pl/arcgis/services/ogc/OGC_ortofoto_2024/MapServer/WMSServer](https://gis1.um.wroc.pl/arcgis/services/ogc/OGC_ortofoto_2024/MapServer/WMSServer)

Then click the **Create** button.
Return to the *Wroclaw* group again and create another resource — **WMS layer**.

On the Resource tab set the name — `Wroclaw orthophoto layer`:

On the **WMS Layer** tab click the *“WMS Connection”* field and select **Wroclaw orthophoto service** resource, then click **Pick selected**.

In the *“Image format”* dropdown list select **image/png**, and in the *WMS layers* dropdown list select **Ortofotomapa 2024 - GUGiK**.

Then click the **Create** button. WMS connection and layer are created.
In the **External access** section you’ll find an auto-generated URL that can be used to connect the data as **raster tiles**. Right away you can add this data to a Web app or a desktop app such as QGIS. Your Web GIS serves as a proxy for the WMS service.

To **add the WMS layer to the Web Map** return to the *Wroclaw* resource group and click the  pencil icon next to the Web Map.

On the **Layers** tab click  **Layer** button, select *“Wroclaw orthophoto layer”* and click **Pick selected** button. WMS layer is now added to the Web Map.

Save the map and open it in display mode. You’ll see that a detailed orthophotomap from external source is now underlaying the previously uploaded data.

## Add basemaps to Web Map
By default Web Maps use the standard OpenStreetMap basemap. But you can connect other basemaps and use them with your Web Maps.
Return to the *Wroclaw* resource group and create a new resource — **Basemap**.

Here you can use our public crowdsourced collection of map services, qms.nextgis.com. Start entering the name of the basemap in the **Pick from QMS** field and select what you need from search results.

All other fields will be filled automatically, also a preview will be available to explore the selected basemap.
An alternative way to create a basemap is to enter the URL for the **XYZ tiles** manually.
Use the slider in the top right corner to compare this basemap to the default OSM.

On the **Resource** tab set the name of the basemap.

Click the **Create** button.
To add the newly created basemap to the Web Map return to the *Wroclaw* resource group and  edit the Web Map resource.

On the **Basemaps** tab click  **Add** button and select the created Basemap resource. Then click **Pick selected** and save the Web Map.

Open the Web Map in  display mode. Now the new basemap is used.

## Create vector layer inside Web GIS
It is possible not only to upload data from files, but also to create datasets right inside the Web GIS.
Return to the *Wroclaw* resource group and create a new resource — **Vector layer**.

Then open the dropdown menu on the “Vector layer” tab and select **Create empty layer**.

In the changed interface select the **Point** geometry type.

On the **Resource** tab set the name for the new layer, e.g. `Bicycle parkings`, and click the **Create** button.

The vector layer is created and you are redirected to its page. Now you need to add attributes to it. Click  **Update** in the right menu.

Here, on the **Fields** tab, click the  **Add** button.
Set up the properties of the new field in the side panel:
* Display name: `Number of parking spaces`,
* Keyname: `parking_spaces`,
* Type: INTEGER.

Then click the **Save** button.
Now it’s time to create a style for the new layer. On the vector layer resource page click **Create resource** and select **QGIS vector style**.
On the **QGIS Style** tab open the dropdown menu and select **User-defined style**.

Simple style constructor is available here. We recommend using QGIS to create styles, but for quick tasks this built-in constructor could be useful. Set up a blue circle with size 12 and white stroke with 1 width. Then click the **Create** button.

A new vector layer is created inside Web GIS.
You can now add it to Web Maps and [publish it via OGC services](https://docs.nextgis.com/docs_ngcom/source/tutorial_webgis.html#publish-ogc-api-features-service).
But first we’ll add some features to the newly created layer using Web interface.
## Edit vector layer on a Web Map, add file attachments
Return to the *Wroclaw* resource group and enter the  Update mode of the Web Map.

First, go to the **Layers** tab, click the  **Layer** button and add *Bicycle parkings* layer by clicking  **Select first eligible child resource** on the right side of the layer. Then click **Pick selected**, and drag *Bicycle parkings* layers to the top of the layers list.

Next, go to the **Settings** tab, find the **Layers editing** dropdown menu and select **Enable**. Save the changes.

You have just added the new vector layer to the map and activated layer editing. Now go to the  “Display” mode of the map.

Zoom in to a place on the map where you would like to place a new bicycle parking. Next, open the layer’s context menu by clicking the three dots to the right of its name, and select  **Edit**.

New tools have appeared on the map.
Select  tool and click on the desired place.

Pop-up modal window appears, where you can set attribute values, e.g. `15` as the number of parking spaces.

There are also two additional tabs available. On the **Description** tab you could enter any rich-text with images to describe the feature. On the **Attachments** tab you could attach an unlimited number of photos or any sort of files to the feature. Change tab to the “Attachments”, click the  **Upload** button and select `Bicycle_parking.jpg` and `WRM_Regulations.pdf` files from the tutorial dataset.

Click the **OK** button to save the feature.
Then go to the context menu of *Bicycle parkings* layer again and click **Stop editing**.

Confirm the edits by clicking the **Save** button in the pop-up dialog.

A new feature is created.
Click on the point symbol on the map. An identification panel will appear, where you can explore the attributes and attachments of the feature.

Click on the attached photos and panoramas to view them.
Now that we have data in this layer, let’s publish it via OGC API Features.
## Publish OGC API — Features service
We’ll publish this layer with OGC API — Features protocol so that it can be edited in external software. Go back to the *Wroclaw* resource group and create a new resource, **OGC API Features service**.

Service creation is a simple process. All you need is to select a layer.
On the **OGC API Features service** tab click the  **Add** button and select the *Bicycle parkings* layer, then click the **Pick selected** button.

By default the resource would be called just “OGC API Features service”. To set a custom display name go to the **Resource** tab and enter `Bicycle parkings (features service)`. Then click the **Create** button.
#### NOTE
The name “Bicycle parkings” is already used for the vector layer resource, so you need to add “features service” at the end.

The service is created and you are redirected to its page. In the **External access** section you can see the endpoint of the published service. Copy the URL to use it in external applications.

## What next
Congratulations! You’ve completed the tutorial and learned the basics of geospatial data management in NextGIS Web.
There are still a lot of things to explore. You can learn to:
* manage users and permissions, allowing to set up unique access combinations for each layer, service and map;
* manage coordinate reference systems;
* manage data directly from QGIS, including project publishing, style management and collaborative editing;
* and many more.
Try other tutorials or dive into documentation to learn more.
# type_change.html.md
# How to convert file to another GIS format
* [Order data](https://data.nextgis.com/en/) for your area of interest, e.g. in GeoJSON format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Import target layer, which GIS format you want to change, in [QGIS](https://qgis.org/en/site/forusers/download.html).
* Right-click on a target layer in Layers Panel, select option “Save as…”. Thus you’ll create a copy of the layer, but in desired GIS format.

* In the pop-up window set a format, a name and a path to a new file. Press “OK”.

* A new layer will be created in the desired GIS format.
# ui.html.md
# User interface
NextGIS Tracker app has two principal screens:
* Main screen;
* Settings screen.
## Main screen
The main screen of the app is shown on [Fig. 1125.](#ui-tracker-main-pic).

The main screen shows information about track recording.
In the **Current location** section:
* Information about the track in progress (if GPS is available);
* No information about the track in progress (no GPS access);
In the **Status** section:
* If no recording is in progress, the message is: “Stand by. Tap Start to start collecting tracking data.”;
* If a recording is in progress, the message is “Collecting tracking data and syncing …”;
In the **Tracks** section:
* If you have recorded tracks, they are shown in this section. Tracks can be exported to GPX file;
* If there are no tracks, the section is empty;
* Button that starts/stops track recording.
## Settings
Tap the menu button in the top right corner of the app screen, then select “Settings”.
Settings screen is shown on [Fig. 1126.](#tr-settings-pic).

On the Settings screen you can configure the following parameters:
In the **Sync** section:
* “Sync with the cloud” - enable or disable synchronization with Web GIS;
* “Device ID” - copy the ID of your device;
In the **Tracks** section:
* “Divide tracks by days” - at midnight the current track stops and a new one begins;
* “Coordinate pick time interval” - how often the app detects and records coordinates. Select from a dropdown list an interval between 1 second and 45 min.;
* “Minimum distance to pick coordinates” - select the smallest change in distance to be marked as a new location (1-300 m);
* “Sync interval, sec” - select from a dropdown list how often to synchronize tracks with Web GIS (min 1 sec., max 45 min.);
* “Max points to send at once” - select from a dropdown list a number between 1 and 300.
# ui.html.md
# User interface
The top bar contains the following elements:
Press **Toolbox** to browse the catalog of tools.
Press **My tasks** to see the list of your tool runs. To the right you’ll find your username and userpic. Click on the downward arrow to open the user menu. From this menu you can go to your profile or log out.
**Main page**
On the main page below the top panel you’ll find the search bar and tags.
Select one or several tags to filter tools. To remove a tag from the filter, click on it again. To remove all tags from the filter, press **Reset**.
Tools catalog is displayed on the main page. Each tool has a separate card with short description and tags. Click on the card to open the tool page.
To add a tool to Favorites, click on the bookmark icon in the top right corner of the card. To see the full list of Favorites, select the “Favorites” tag from the tag section.
# update_plugins.html.md
# Update plugins
Open QGIS and in the menu bar select `Plugins ‣ Manage and install plugins`.

Go to the *Installed* tab.
Plugins that have updates available are marked **in bold**.

To install all available updates, press **Upgrade all**.
Make sure that the plugins are activated (ticked).
## Check installed verison of a plugin
Open QGIS and in the menu bar select `Plugins ‣ Manage and install plugins`.
Go to the *Installed* tab. Click on the plugin in the list or star typing its name in the search bar and select the plugin from the search results.
On the right you’ll find the plugin information.

In the About panel you’ll find Installed verison and Available version (stable) with date and time of its release. Also, if an update is available, there will be a message at the top of the panel.
# update_vector_layer.html.md
# Update Web GIS layer from CSV
Update an existing Web GIS layer on NextGIS platform using uploaded CSV file. Works only with point vector layers. It is possible either to add data to existing one or to replace existing features.
Data structure of CSV file should be the same as of target Web GIS layer.
NextGIS Web (NGW) is a geodata managing system. You can use it for free after [signing up](https://docs.nextgis.com/docs_ngcom/source/create.html). With NextGIS Web you can store geodata, create interactive online maps, give access to them to your teammates and clients, edit features directly on the map and in the feature tables, as well as process them with specialized Toolbox tools. [More on what NGW can do](https://docs.nextgis.com/docs_ngweb/source/general.html).
Inputs:
* Web GIS address. Example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com);
* Login. NextGIS ID or Web GIS user login;
* Password. User password;
* Vector layer resource ID. Numbers at the end of the layer resource URL. For instance, corresponding number for resource “Matter levels” is 5150 since its address is [https://demo.nextgis.com/resource/5150](https://demo.nextgis.com/resource/5150).;
* Delimiter. Specify delimiter in uploaded CSV-file, e.g. `,` (comma)
* Mode. Use `Add` to add to the data and `Replace` to completely replace existing data;
* Skip frist lines. Number of lines to skip before CSV header;
* Choose CSV file. Point file with coordinates in
```
*
```
.CSV format. Fields with latitude and longitude should be named `lat` and `lon`, respectively. Coordinates should be in WGS84 (EPSG:4326). If the table contains dates, they must be written in [ISO](https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat) format, for example, 2019-05-18T15:17:08.132263.
Outputs:
* Updated vector layer in Web GIS.
* CSV report, showing ID of the updated layer, selected mode, number of uploaded features and hyperlink to updated layer in Web GIS.
Troubleshooting
* Invalid type error - incorrect resource ID. Specify the ID of the vector layer resource, not that of the resource group containing the layer.
* Invalid type of the layer - incorrect layer type. Only vector layers can be used.
* Invalid operation mode - incorrect mode. You can only type in Replace or Add.
* Invalid geometry type - target layer geometry is not point.
* Invalid structure of the layer - data structures of CSV and target layer do not match.
Launch the tool: [https://toolbox.nextgis.com/t/update_vector_layer](https://toolbox.nextgis.com/t/update_vector_layer)
**Try it out using our sample:**
Download [input dataset](https://nextgis.com/data/toolbox/update_vector_layer/update_vector_layer_inputs.zip) to test the instrument. Step-by-step instructions included.
Get the [output](https://nextgis.com/data/toolbox/update_vector_layer/update_vector_layer_outputs.zip) to additionally check the results.
# upgrade.html.md
# Upgrade
The version number for NextGIS GeoServices On-Premise contains three parts in `A.B.C` pattern, where `A.B` is the main version number and `C` is a patch version.
Updates between main versions must be performed step by step, without skipping a version. So if your current version is `2.18.0` and you wish to update to `2.20.0`, you need to update to `2.19.0` first, and only then to `2.20.0`. If there are patched versions (e.g. `2.18.1`, `2.18.2` and so on), upgrade to the latest patched version of the main version.
#### IMPORTANT
All steps in this section must be performed by the `root` user. If you use `sudo` to avoid mixing up the commands, we recommend first running `sudo -i` to get a fully functional root user session.
To upgrade from one version to another follow these steps:
**Step 1:** Review the actions and requirements listed below for the specific version:
> * [Upgrade to 2.26.x from 2.25.x](#upgrade-to-2-26-x-from-2-25-x)
> * [Upgrade to 2.25.x from 2.24.x](#upgrade-to-2-25-x-from-2-24-x)
> * [Upgrade to 2.24.x from 2.23.x](#upgrade-to-2-24-x-from-2-23-x)
> * [Upgrade to 2.23.x from 2.22.x](#upgrade-to-2-23-x-from-2-22-x)
> * [Upgrade to 2.22.x from 2.21.x](#upgrade-to-2-22-x-from-2-21-x)
> * [Upgrade to 2.21.x from 2.20.x](#upgrade-to-2-21-x-from-2-20-x)
> * [Upgrade to 2.20.x from 2.19.x](#upgrade-to-2-20-x-from-2-19-x)
> * [Upgrade to 2.19.x from 2.18.x](#upgrade-to-2-19-x-from-2-18-x)
> * [Upgrade to 2.18.x from 2.17.x](#upgrade-to-2-18-x-from-2-17-x)
> * [Upgrade to 2.17.x from 2.16.1](#upgrade-to-2-17-x-from-2-16-1)
> * [For versions 2.16.1 and below](#for-versions-2-16-1-and-below)
**Step 2:** Stop all the services:
```shell
$ docker compose stop
```
**Step 3:** In the file `.env` change the value of `IMAGE_VERSION` to the code of the version you’re upgrading to.
If you haven’t modified the configuration, you can instead [download the current config template](https://docs.nextgis.com/docs_geoserv_prem/source/admin.html#nextgis-geoservices) and unpack it. If the server does not have Internet access, download the file on another PC and transfer it to the server.
**Step 4:** Restart all the services:
```shell
$ docker compose up -d
```
## Upgrade to 2.26.x from 2.25.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.25.x from 2.24.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.24.x from 2.23.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.23.x from 2.22.x
If you set up an OAuth server with GeoServices, change path in the Redirect URI from `/oauth2/callback` to `/oauth`.
## Upgrade to 2.22.x from 2.21.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.21.x from 2.20.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.20.x from 2.19.x
If you’ve modified the configuration, then in order to preserve them, do the following:
In the `docker-compose.yaml` file add `node-renderer`, in the `app` service add environment variable `NODE_RENDERER_SECRET`:
```yaml
app:
...
environment:
NODE_RENDERER_SECRET: node-renderer-secret
...
node-renderer:
image: ${IMAGE_BASE}/node-renderer:${IMAGE_VERSION}
restart: unless-stopped
environment:
SECRET: node-renderer-secret
```
After that perform the upgrade as described above.
If no modifications were made, you can instead download a current template at Step 3 and unpack it.
## Upgrade to 2.19.x from 2.18.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.18.x from 2.17.x
No additional steps needed, proceed with the standard steps to update.
## Upgrade to 2.17.x from 2.16.1
No additional steps needed, proceed with the standard steps to update.
## For versions 2.16.1 and below
If you have GeoServices 2.16.0 or earlier, contact us at [support@nextgis.com](mailto:support@nextgis.com).
#### NOTE
If you need to perform an upgrade in a closed network, contact us at [support@nextgis.com](mailto:support@nextgis.com)
# upgrade.html.md
# Upgrade
In general NextGIS Web upgrade process consist of the following steps:
* Stop services
* Create backup
* Upgrade packages
* Apply migrations
* Start services
## Stopping services and creating backup
Previous sections describe services and backups. For example, it may look as
follows:
```none
# systemctl stop ngw.service ngw-maintenance.timer
# su ngw -c "nextgisweb backup"
```
## Upgrading packages
Switch to `ngw` user (do not forget about virtualenv and `NEXTGISWEB_CONFIG`
environment variable if you hadn’t added them to `.bashrc`):
```none
# su ngw
$ cd
```
Change directory to `package/nextgisweb`, pull latest changes, and look at
available version tags:
```none
$ cd package/nextgisweb
$ git pull
$ git tag -l '*.*.*'
4.3.0
4.3.1
4.3.2
4.4.0
```
Of course, you can use any other version, including a `master` branch, but
here we consider an upgrade to the `4.4.0` version as an example. So check it
out, upgrade the package in virtualenv and recompile i18n translations:
```none
$ git checkout 4.4.0
$ cd ..
$ pip install -e nextgisweb
$ nextgisweb-i18n -p nextgisweb compile
```
And then, go to the home directory and update Node.js and pnpm project
environment with workspaces, and build necessary files:
```none
$ cd
$ nextgisweb jsrealm install
$ pnpm run build
```
Repeat these steps with additional packages such as `nextgisweb_qgis` and
`nextgisweb_mapserver`. Some of them may require additional steps, such as
upgrading system software.
After that you return to `ngw` home directory:
```none
$ cd ~
```
## Applying migrations
### Upgrading from 3.7.0 or higher
Automatic database migrations were introduced in version `3.7.0`. If you’re
upgrading from `3.7.0` or higher, check required migrations with:
```none
$ nextgisweb migration upgrade
```
And then apply them with:
```none
$ nextgisweb migration upgrade --no-dry-run
```
### Upgrading from previous versions
In case of upgrade from a version before `3.7.0`, you should manually apply
SQL migrations from `package/nextgisweb/migration` directory before you run
automatic migration.
Files in that directory are prefixed by date, so you have to run them one-by-one
in historical order. The command `nextgisweb sql -f` can help you with that:
```none
$ nextgisweb sql -f package/nextgisweb/migration/2001-01-01-filename.sql
```
Don’t worry about applying SQL-migration twice. If it’s already applied, it will
fail with an error and doesn’t change any data.
When all SQL-migrations are applied you should run automatic migrations with
commands given above:
```none
$ nextgisweb migration upgrade
$ nextgisweb migration upgrade --no-dry-run
```
## Starting services
Now you can start services back. It may look as follows:
```none
# systemctl start ngw.service ngw-maintenance.timer
```
## Upgrading PostgreSQL and PostGIS
PostgreSQL and PostGIS can be upgraded as described in corresponding docs,
including dump and restore major upgrades. But keep in mind the following:
- After dump and restore during PostgreSQL upgrade, ownership of PostGIS tables
(`spatial_ref_sys`, etc.) can be lost. You will have to set it up again.
- NextGIS Web manages the `spatial_ref_sys` table, but it will be overwritten
while restoring from a dump or upgrading PostGIS. So that, you will need to
execute `nextgisweb spatial_ref_sys sync_postgis` command after restoration.
# upload_tables_postgis.html.md
# How to load multiple tables of different regions in PostgreSQL/PostGIS
#### IMPORTANT
To run, you need an installed PostgreSQL database with the [PostGIS](https://postgis.net/install/).
* [Order data](https://data.nextgis.com/en/) for multiple regions in SQL (PostgreSQL/PostGIS) format.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Open the first dataset. Load target layer as stated [here](https://data.nextgis.com/en/howto/pg/) without changing the structure.
For example:
```bash
psql -f aerialway-line.sql -h host -U user -d database
```
where aerialway-line.sql - target layer, host - address of the server with database (or localhost), user - user name, database - name of the database.
* Go to the second dataset. Open in the editor (Notepad) same type of layer, which was loaded from the first set (e.g. aerialway-line.sql)
Modify it so that only this structure remains (remove extra lines):
```bash
SET standard_conforming_strings = OFF;
BEGIN;
COPY "public"."boundary_polygon_lvl8 ...
...
END;
COMMIT;
```
Modified file example:
```bash
SET standard_conforming_strings = OFF;
BEGIN;
COPY "public"."aerialway_line" ("wkb_geometry", "aerialway", "name", "name_en", "osm_type", "osm_id") FROM STDIN;
0105000020E61000000100000001020000000D0000007CABBF6F8D25344046802E75EB784B40A279A5D189253440DA0BBBDEEC784B40BF547DF8432534401AB3DB1D08794B40E129E44A3D2534404EA6C0B80A794B4064986E6D3C2534405A0CC3EC0A794B40597A23A93B25344095C84FF40A794B40A65F22DE3A253440CB51DBE10A794B402A2AD1483A2534403C69E1B20A794B40EE3F321D3A2534404240BE840A794B407D282C4C3A253440BF61A2410A794B403FA2AE5A3E253440196B24AE08794B40D9C6E93587253440A5CAE660EC784B403CDC0E0D8B253440888961E2EA784B40 gondola \N \N way 71513012\.
END;
COMMIT;
```
* Load the edited file(s) in the same way as in step 3 to the database
```bash
psql -f aerialway-line.sql -h host -U user -d database
```
# url_route.html.md
# URLs and routes
This document summarizes the current URL and route naming conventions. These
rules are taken into account in some parts of backend and frontend logic (CORS,
client-side routes).
## URLs
URLs are split into three categories:
* API URLs - accessed by the fronted and libraries.
* Static URLs - used to serve static content.
* User URLs - viewed by users in browsers.
API URLs:
1. Start with `/api/` prefix.
2. If bound to a specific resource, `/api/resource/{id}/` prefix is used.
3. For the rest, `/api/component/{component}/` prefix is used.
4. Use snake case (`/api/component/auth/current_user` for example).
5. Collections must use singular forms and the trailing slash
(`/api/resource/{id}/feature/` for features of resource).
6. Collection items mustn’t use the trailing slash.
Static URLs:
1. Start with `/static/{static_key}/` prefix (`{static_key}` is unique for
each build and used for cache invalidation on caching proxies).
User URLs:
1. Use kebab case (`/control-panel` for example).
2. Prefix `/resource/{id}/` is used if bound to a specific resource.
## Route names
Pyramid route names:
1. Start with `{component}.` prefix.
2. Use snake case (`pyramid.control_panel` for example).
# users.html.md
# Managing users
To allow another user to access your Web GIS, [add them to your team](https://docs.nextgis.com/docs_ngcom/source/teams.html#team-management).
Keep in mind, that the user would only see the resources if corresponding [permissions are set](https://docs.nextgis.com/docs_ngcom/source/permissions.html). A newly added user has the permissions set for:
* “Authenticated” or “Everyone”;
* a user group that has [“new users” flag ticked](https://docs.nextgis.com/docs_ngweb/source/users.html#ngweb-admin-controlpanel-usergroup-create-pic).
After adding a user to your team, you can include them in a [group](https://docs.nextgis.com/docs_ngweb/source/users.html#ngw-create-group) or [set up permissions](https://docs.nextgis.ru/docs_ngcom/source/permissions.html) for that particular user.
## Create new user group
Open “Control panel” from the main menu (see item 1 in [Fig. 283.](admin_interface.md#admin-index-pic)). Then go to the “Groups” page and click **Create**.

In “Create new group” dialog enter full name and group name (short name), if necessary enter a group description, set group members and global permissions (see [below](https://docs.nextgis.com/docs_ngweb/source/users.html#global-permissions)) and click **“Create”**.
Set “New users” flag for a group to automatically assign new user to it.
#### NOTE
A name for a group should contain only letters and numbers.
## Global permissions
While creating or editing a user or user group, you can set global permissions concerning Web GIS a whole:
* creating users and groups of users, managing access permissions;
* manage spacial reference systems of the Web GIS;
* manage CORS settings.
These global permissions are separate from [access permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html) applied to particular resources (vector and raster layers, resource groups, services, Web Maps etc). The latter regulate working with resources, while global permissions allow users to manage Web GIS functions.

#### WARNING
If you include Guest to a group that has global permissions, anyone will be able to access Control panel even without logging in.
See how it works in our video:
Watch on [youtube](https://youtu.be/pp137N12-B4?si=r-Kb92HSVI2tbfHl).
## How to find user identification number
To learn user ID, in the Web GIS go to the [Control panel](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-control-panel), open [Users](https://docs.nextgis.com/docs_ngweb/source/users.html) section, find the user you need and enter the Edit mode (or just hover the cursor over the pencil icon to see the link without opening the page, if your browser allows it).

## Disable or delete users
First, [remove the user from your team](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management)
In the main menu open the Control panel and select “Users”. Each user has “Edit” and “Delete” icons on the right end of the line.

On the editing page you can modify properties of the user and **disable** the user. Tick “Disabled” and press **Save**.

If the user is disabled, settings concerning groups, resource ownership and permissions stay intact and can be reactivated after the user is re-added to the team. This also preserves all information on the user’s acivity in versioned resources.
In most cases, disabling a user is enough, however, you can **delete a user permanently**. Click the “Delete” icon in the user list and confirm the action in the pop-up window. Alternatively, you can open the editing page and click **Delete**.
If the user is the owner of Web GIS resources or edited a versioned vector layer, a warning appears: *Validation error.
User is referenced with resources*. Click on **Technical information** to see ID of the resources owned by the user. To delete the user, first you need to [change the owner](https://docs.nextgis.com/docs_ngweb/source/edit_resource.html) of resources and disable versioning for the layers the user edited. Keep in mind, that it destroyes all recorded version information for that layer. So we recommend disabling users instead, unless strictly necessary.
## How to bind NextGIS ID to an existing Web GIS user
If you have a user created within Web GIS with a username and password (e.g. paganel, 12345paganel) you can bind it to your NextGIS ID account.
1. [Create a NextGIS ID account](https://docs.nextgis.com/docs_ngcom/source/create.html)
2. Let the Web GIS administrator know what username you have in your [NextGIS ID profile](https://docs.nextgis.com/docs_ngcom/source/create.html#ngcom-ngid-profile). The administrator adds you [to the team](https://docs.nextgis.com/docs_ngcom/source/teams.html#ngcom-team-management). Then go to your NextGIS ID account, log in and make sure that the Web GIS is shown in the [list of your teams](https://my.nextgis.com/teammanage/member).
3. Open Web GIS, log in using your old username and password (in our example paganel/1234paganel).
4. Click on the initials or userpic in the top right corner and open the user settings.

1. In the user settings click **Bind account** in the NextGIS ID field.

If binding is successful, the button is replaced by the words “Account bound” and your identifier.

## Create new local user
If Web GIS has a local limit enabled, the Administrator can set usernames and passwords for users. This way the users only access the Web GIS and cannot use the other NextGIS functionality available on Premium.
To create a new local user, go to “Control panel” from the main menu. Then go to the “Users” page and click **Create**.

In “Create new user” dialog enter the following information:
* Full user name (e.g. John Smith)
* Login – user login (e.g. smith)
* Password
* Group(-s) user belongs to (select from a dropdown menu. If the required group is absent you need to create a new one (see [Create new user group](#ngw-create-group))).
* Permissions - [global permissions](https://docs.nextgis.com/docs_ngweb/source/users.html#global-permissions) concerning Web GIS as a whole
* Interface language for the user
You can add some more information about the user in the “Description” field.
Then click **“Create”**.
#### NOTE
The password is limited in length in the range of 5-25 characters. Login can have symbols of the Latin alphabet, numbers and an underscore, but must begin necessarily with a letter.
You can set up [access permissions](https://docs.nextgis.com/docs_ngcom/source/permissions.html) for particular users and groups of users.
## Update local user password
To update user password you can use administrative interface. To do it select “Control panel” in the main menu. Go to “Users” and click pencil icon near the user you want to update password for. In the “Password” field select “Assign new” in the dropdown menu, fill in a new password and click **Save** button.

Also there is an option to change user password using command line:
#### WARNING
Setting a password using a command line is not safe.
```bash
env/bin/nextgisweb --config config.ini change_password user password
env/bin/nextgisweb --config config.ini change_password user password
```
#### NOTE
The password is limited in length in the range of 5-25 characters.
If you forgot the password to your NexGIS ID, follow [this instruction](https://docs.nextgis.com/docs_ngcom/source/faq_webgis.html#i-forgot-my-account-password-nextgis-id-what-to-do).
# vect_layer_upload_params.html.md
# Advanced options for uploading vector layer from a file
Advanced settings are available when uploading a vector layer from a file ([Fig. 476.](#ngweb-vect-layer-upload-params)).

## Processing possible errors
**Fix errors**
Possible values:
* **Whatever possible** - errors will be corrected to the maximum with possible data loss;
* **Without losing data** - errors will be corrected without data loss;
* **None** - no error will be corrected.
The following fixes are made:
* Extract geometries from Geometry Collection and Multigeometries if they have only one part;
* Close the rings of polygons;
* When extracting geometries from a Geometry Collection and Multigeometries the first matching geometry is taken, the others are discarded. This correction is not performed in “Without losing data” mode.
**Skip features with unfixable errors** - defines what happens if the errors cannot be corrected using the *Fix errors* mode. If ticked, features with errors will be skipped and the layer will be created.
If unticked, then the layer will not be created and the first 10 errors that led to this will be listed.
## Detecting geometry type
In NextGIS Web vector layers must have a single type of geometry.
If the source file contains different types of geometry, you must either set up filtering or convert the geometries to a specific type.
**Geometry type**
Possible values:
* Auto
* Point
* Linesrting
* Polygon
This setting specifies the geometry class. For example, the POINT class includes geometries such as POINT, MULTIPOINT, POINTZ, MULTIPOINTZ.
If a geometry class is selected and the original layer contains geometries from other classes, this will be considered an error.
If you check **Only load features of the selected geometry type**, then geometries of other classes will be skipped.
Geometry type can be further specified by parameters **Multi-geometry** and **Z-Coordinate**.
Possible values for those two parameters are:
* Auto
* Yes
* No
## Object ID detection settings (FID)
Every feature in a NextGIS Web vector layer must have a unique identifier. If the file has no field that can serve as FID, a new field is created. You can select how to define FID for the layer.
**FID source**
Possible values:
* **Auto** - FID is taken from the *integer* field with unique values if it exists. The field is not included into the layer’s attributes. Otherwise, a new hidden field is created, numbers start with 1;
* **Sequence** - a new field is created, FID starts with 1;
* **Field** - FID is taken from the field defined by user. For example, if a layer was exported from NextGIS Web, it has a field *ngw_id*.
# vector2datalens.html.md
# Prepare vector layer for DataLens
The tool converts vector dataset to a CSV file, compatible with DataLens BI service. Both Geopolygons and Geopoints are supported. Inputs must be points or polygons.
You can get a vector data layer at [data.nextgis.com](https://data.nextgis.com).
See also a [detailed instruction](https://data.nextgis.com/en/howto/yandex_datalens/) on how to upload data to Yandex DataLens.
Inputs:
* Input vector – vector data layer or zip-archive.
Outputs:
* CSV file ready to be imported in DataLens.
Launch the tool: [https://toolbox.nextgis.com/t/vector2datalens](https://toolbox.nextgis.com/t/vector2datalens)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# vector_data_types.html.md
# Vector layer data types
The following vector layer field types (datatype) are supported:
* INTEGER - number
* BIGINT - long number
* REAL - floating point number
* STRING - string
* DATE - date
* TIME - time
* DATETIME - timestamp
The following vector layer geometry types (geometry_type) are supported:
* POINT
* LINESTRING
* POLYGON
* MULTIPOINT
* MULTILINESTRING
* MULTIPOLYGON
* POINTZ
* LINESTRINGZ
* POLYGONZ
* MULTIPOINTZ
* MULTILINESTRINGZ
* MULTIPOLYGONZ
# vectorclip.html.md
# Layer intersection
Finds overlapping areas between features of 2 polygon layers.
Inputs:
* Polygon layer 1
* Polygon layer 2
Files should be in GDAL-supported format, e.g. GeoPackage, GeoJSON, MapInfo TAB, ESRI Shapefile (the last two - in ZIP-archive).
You can use this tool to clip line geometry. Upload the line layer to the field 1 and the clipping boundary to the field 2.
Outputs:
* GeoPackage file with polygon layer containing only the overlapping areas.
Launch the tool: [https://toolbox.nextgis.com/t/vectorclip](https://toolbox.nextgis.com/t/vectorclip)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# version.html.md
# Versioning
Geodata storage NextGIS Web supports **versioning**, a mechanism that logs changes made to features of vector layers.
When a feature is created, deleted or edited, this change is registered (who made it and when), and the state of the database before the change is saved in a special way.
It allows NextGIS Web administrator to:
* Learn who and when made any change to the vector layer;
* Learn who, when and how changed the attributes or the geometry of the feature;
* Access any recorded state of the vector layer and reset incorrect changes;
* Get a list of all the edits made by one user;
* Get a list of all the edits for a given period, for example, a particular date or since a connected database was last updated;
etc. Changes in both **attributes** and **geometry** are logged.
Versioning is **disabled by default**. You can [turn it on](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic) for a specific vector layer or [for all subsequently created layers](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-default) if needed. Logging activates when the versioning is turned on, the changes made before that are not registered anywhere.
#### IMPORTANT
When the versioning is turned off, all the logged information about the changes in the layer is **deleted**.
## Versioning in the NextGIS Web interface
At the moment in the user interface of NextGIS Web you can access the following functions:
* Enable and disable versioning [in the vector layer settings](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic);
* Enable [feature versioning by default](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-default) for your Web GIS;
* View versioning status (yes/no) on the Vector layer resource page;
* [View history of a vector layer](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-view-history);
* Additional [virtual field “Last changed”](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-fields) in the attribute table of the versioned layer. It allows to see the time and author of the latest change for each feature of the layer;
* [Revert vector layer to the selected version](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-revert);
* [Copy selected version to a new layer](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-copy).
### View history of a versioned layer
To see the history of vector layer edits, go to the resource page and click **Version history** in the actions panel on the right.
A table opens:

Each version entry has the following information:
* Date and time of the edits;
* Editor username;
* Stats: how many features were created, updated, deleted or restored.
Click on the + on the left end of the row to expand the list of the modified features. The number of the feature is its fid.

Click on the tree dots on the right end of the row to open the version menu. It has two options:
* Revert the layer to the selected version;
* Create a copy of the layer, reproducing its state in the selected version.

### Revert a versioned layer to the selected version
If feature versioning is enabled for a layer, you can revert it to any of the previous recorded states.
Open the layer resource page. Click **Version history** in the right panel.
In the Version history table find the row that logs the last edits you wish to keep. Click on the three dots on the right end of the row to open the menu and select **Revert to this version**.

Confirm your action in the pop-up window. The layer is reverted to the selected version.
A new entry is added to the version history. It logs undoing of all the edits after the selected version. If features were added, deletion is recorded, and vice versa: if features were deleted, their restoration is recorded.
All the previously recorded history entries are preserved. You can restore the layer to any of the versions, including the one that was current before reverting.

### Create a copy of the selected version
Versioning allows to undo the latest changes by [reverting to an earlier version](https://docs.nextgis.com/docs_ngweb/source/version.html#vers-ngw-revert) of the layer, or save a version of a layer recorded in its history as a separate resource.
Open the layer resource page. Click **Version history** in the right panel.
In the Version history table find the row that logs the last edits you wish to keep. Click on the three dots on the right end of the row to open the menu and select **Create copy**.

In the pop-up window select the resource group where you want to create a copy of the layer. By default the copy is created in the same group. Press  to select another group.
Also here you can enter a custom name for the new layer. By default the name is “Copy” + name of the initial layer.

Click **Create copy** to finish.
### Enable feature versioning by default
You can have feature versioning enabled by default for all new layers added to your Web GIS.
Go to the [Control panel](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-control-panel) and select **Feature versioning**.
On the opened page switch the slider and click **Save**.

For all the layers you subsequently create in the Web GIS via web interface or [add from QGIS with NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/ngc_data_transfer.html#vector-data) the versioning is on by default.
You can also enable and disable versioning for individual layers [in the layer setttings](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html#create-vector-layer-vers-pic).
## Versioning in NextGIS Web API
The main options for obtaining information about versioned layers are now available only in the NextGIS Web API. Through API queries, you can get the states of layers and features for different time periods, the difference between different states, and so on. Here are some examples of API methods for versioned layers:
- `/api/resource/{id}` you can get the information on the versioning status and the current version of the data in the general layer query (‘versioning’ property).
- `/api/resource/{id}/feature/` add layer version to get its state at a particular moment
- `/api/resource/{id}/feature/changes/check` to get information about the difference between two given versions of the layer
- `/api/resource/{id}/feature/version/{vid}` get metadata for a given version
## Versioning in QGIS
Versioning is actively used in QGIS plugin [NextGIS Connect](https://docs.nextgis.com/docs_ngconnect/source/ngconnect.html) that allows integration with NextGIS Web. When versioning is enabled, QGIS can get information about all the changes made to the layer stored in NextGIS Web since the last time it had been accessed. It allows to [simultaneously edit](https://docs.nextgis.com/docs_ngconnect/source/edit.html) a layer stored on the server from several QGIS sessions on separate computers.
# versioning.html.md
# Package versioning
NextGIS Web itself and most extension packages use [bump2version](https://github.com/c4urself/bump2version) to manage
versions. Here is the sample configuration file `.bumpversion.cfg`, which
should be placed next to `setup.py`:
```ini
[bumpversion]
current_version = 1.0.0.dev0
parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))?
serialize =
{major}.{minor}.{patch}.{release}{dev}
{major}.{minor}.{patch}
tag_name = {new_version}
message = Bump version to {new_version}
commit = False
tag = False
[bumpversion:part:release]
optional_value = release
values =
dev
release
[bumpversion:part:dev]
[bumpversion:file:VERSION]
```
This configuration provides [PEP 440](https://www.python.org/dev/peps/pep-0440/) compatible version numbers, which consist
of `major`, `minor`, `patch` and `dev` parts. And the special part
`release` separates release and development versions.
The current version is stored in `bumpversion.cfg` and `VERSION` files. In
`setup.py` Python package version should be read from `VERSION` like this:
```python
from setuptools import setup
with open('VERSION', 'r') as fd:
VERSION = fd.read().rstrip()
setup(
name='nextgisweb_foo',
version=VERSION,
# ...
)
```
Bump2version provides tools for incrementing version parts and for updation
files where it is stored. If the current version is `4.3.2.dev1` incrementing
different parts will with `bump2version part` lead to the following results:
`major` → `5.0.0.dev0`, `minor` → `4.4.0.dev0`, `patch` →
`4.3.3.dev0`, `dev` → `4.3.2.dev2`, `release` → `4.3.2`
As you see, it increments the given part and sets the following parts to zero.
Incrementing of `release` part just drops `.devX` suffix (actually it
becomes `.release0` but this part is declared as optional).
## Package configuration
1. Decide which version is the current, `1.0.0.dev0` in the example.
2. Create `.bumpversion.cfg` file from the template above.
3. Create `VERSION` text file and place the current version there.
4. Adapt `setup.py` with the example above.
## Development versions
Incrementing `dev` version part is helpful in dependencies between packages.
Imagine you have added some function in `nextgisweb` core package and now you
want to use it in the extension package.
So, in `nextgisweb` package:
```bash
$ cd package/nextgisweb
$ cat VERSION
3.8.0.dev0
$ bump2version --commit dev
$ cat VERSION
3.8.0.dev1
```
In the extension package `nextgisweb_foo` you can use this version in
requirements in `setup.py`:
```python
from setuptools import setup
setup(
name='nextgisweb_foo',
version=VERSION,
# ...
install_requires=[
'nextgisweb>=3.8.0.dev1',
],
# ...
)
```
This prevents installation and usage of `nextgisweb_foo` package when
`nextgisweb` version is lower than `3.8.0.dev1`.
#### NOTE
The `3.8.0.dev1` version in lower than `3.8.0` and higher than `3.7.0`.
It’s also possible to increment the version during git merge, for example:
```bash
$ cd package/nextgisweb
$ cat VERSION
3.8.0.dev1
$ git merge --no-commit some-feature-branch
$ bump2version --allow-dirty dev
$ cat VERSION
3.8.0.dev2
$ git add VERSION .bumpversion.cfg
$ git commit
```
## Release versions
To create release version use the following commands:
```bash
$ cd package/nextgisweb
$ cat VERSION
3.8.0.dev2
$ bump2version --commit --tag release
$ cat VERSION
3.8.0
```
Then start new minor (or major) version:
```bash
$ bump2version --commit minor
$ cat VERSION
3.9.0.dev0
```
And push tags to remote repository:
```bash
$ git push --tags origin master
```
## Backports and patches
Sometimes it’s required to backport critical bug fixes to previous major and
minor versions. These fixes should be done in a separate branch. So if it
doesn’t exist, create it from a tag:
```bash
$ git checkout 3.8.0
$ git branch 3.8.x
```
After that start new development version:
```bash
$ bump2version --commit patch
$ cat VERSION
3.8.1.dev0
```
Then use `git cherry-pick` to backport required commit and increment `patch`
version component:
```bash
$ git cherry-pick commit-hash
```
And then create a new release version and push it to the repository:
```bash
$ bump2version --commit --tag release
$ git push --tag origin 3.8.x
```
# view_webgis.html.md
# Viewing tracks on a Web Map in Web GIS
If the app is synced with a Web GIS, you can view the tracks on a Web Map.
Before recording a track make sure the synchronization is enabled (see [how to do it](https://docs.nextgis.com/docs_ngtracker/source/setting_up.html#ngtr-set-send)).

When you finish [recording the track](https://docs.nextgis.com/docs_ngtracker/source/rec_track.html), open the Web GIS synchronized with the app.
In the Main resource group you’ll find a Tracker group with a Tracker inside, see [Fig. 1133.](#trackers-group-pic).

Open any Web Map in the Web GIS [Fig. 1134.](#open-main-webmap-pic) or create a new one (“Create resource” button, [learn more](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html)).

On the Web Map on the left panel press the “Trackers” icon , see [Fig. 1135.](#trackers-panel-select-pic).

It will open the Trackers panel that has a list of all available trackers. Trackers can be sorted by name or time of the recording.
To view a track on the Web Map:
1. in the “Time range” field select the time interval when the track was recorded;
2. in the track list select the element(s) of the track(s) you want to display on the map.

Elements you can view:
*  last point of the track
*  the route lines of the GPS-tracks
*  points where coordinates were picked
*  stops (not all tracks have them)
In the context menu of a tracker you can set the time range to the last day of its activity to see the latest track recorded by the tracker. You can also see tracker activity chart for a selected day (points per hour).

Also in the Web GIS you can:
* [Generate reports](https://docs.nextgis.com/docs_ngweb/source/trackers.html#reports) on mileage, top speed, average speed, spent fuel, stops;
* [Export tracks](https://docs.nextgis.com/docs_ngweb/source/trackers.html#track-export) as GPX files.
# water_usage.html.md
# Convert data on water objects
The tool processes data from the State water register: extracts geodata from XLSX file (available for download from [https://voda.gov.ru/activities/gosudarstvennyy-vodnyy-reestr/](https://voda.gov.ru/activities/gosudarstvennyy-vodnyy-reestr/)) and forms GeoPackage with vector data.
Inputs:
* Source file - XLSX file, downloaded from [https://voda.gov.ru/activities/gosudarstvennyy-vodnyy-reestr/](https://voda.gov.ru/activities/gosudarstvennyy-vodnyy-reestr/)
* Object number — unique number of the object from the State water register. Optional field, if a number is specified, the output will contain data only about target object.
* Region of Russia - Optional field. If region is specified, the output will contain data only about this region. Field “Object number“ takes precedence over current field. Basically it means that only one optional field should be filled in at a time.
Output:
* GeoPackage file with water marks on water objects and attributes from the source file.
Launch the tool: [https://toolbox.nextgis.com/t/water_usage](https://toolbox.nextgis.com/t/water_usage)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# web_gis_structure.html.md
# Web GIS structure to spreadsheet
Creates XLSX spreadsheet with a Web GIS structure (a list of resources).
Inputs:
* Web GIS address. Your full Web GIS address, example: [https://sandbox.nextgis.com](https://sandbox.nextgis.com)
* Login. NextGIS ID or Web GIS username;
* Password. Web GIS user password;
* Resource type. Keep the default option “All resources” or select from the resource type from the dropdown menu (see the full list below).
Possible type options:
1. All resources from Web GIS
2. Resource group (directory)
3. PostGIS layer
4. WMS service
5. Basemap
6. PostGIS connection
7. Web Map
8. WFS service
9. Vector layer
10. Raster layer
11. MapServer style
12. QGIS vector style
13. Raster style
14. File bucket
15. Lookup table
16. WMS layer
17. WMS connection
18. Form
19. Trackers group
20. Tracker
21. Collector project
Output:
* XLSX spreadsheet with the list of selected resources from Web GIS.
Launch the tool: [https://toolbox.nextgis.com/t/web_gis_structure](https://toolbox.nextgis.com/t/web_gis_structure)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# webmap2qgis.html.md
# Web Map to QGIS project
The tool works with Web GIS data: converts vector layers and its styles from any chosen Web Map to QGIS project and GeoPackage file.
Inputs:
* Web GIS address – URL of the Web GIS on NextGIS Web platform, containing the Web Map to be converted into QGIS project. For example, `https://demo.nextgis.com`;
* Web Map ID - numbers at the end of the Web Map URL;
* Login – NextGIS ID or username of a Web GIS user that has permissions to read the data;
* Password – password for the user;
* Extent - by default, the extent of the Web Map is used. You can enter a different extent in EPSG:4326. Format: bottom, left, top, right (South, West, North, East). Separate by comma. Example: `54.5, 102.5, 59, 116`;
* Output format. Format in which vector layers from the Web Map will be saved:
- Geopackage (GeoPackage)
- GML
- MID/MIF
- ESRI Shapefile
- CSV
- DXF
* CRS ID - Coordinate system identifier for the output project. For standard CRS use the numbers of the EPSG code. Default is 3857. For custom CRS see the id in the [Control panel](https://docs.nextgis.com/docs_ngweb/source/ngw_srs.html#ngw-srs-id) To view the list of all available codes use the following API: `/api/component/spatial_ref_sys/`.
Outputs:
* ZIP-archive with QGIS project file (.qgs) and GeoPackage file, containing vector layers.
Watch on [youtube](https://youtu.be/uFiOJfK6VQw?si=VN6jPbsW_5TSWNRY).
Launch the tool: [https://toolbox.nextgis.com/t/webmap2qgis](https://toolbox.nextgis.com/t/webmap2qgis)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# webmap_clone.html.md
# Web Map Cloning
With NextGIS Web you can create a copy of an existing Web Map by cloning it. To copy a Web Map, select “Clone” in the actions pane of its resource page.

You will be redirected to “Clone Web Map” page to set up the location of the copy in the resource tree and the name for it.

By default it’s the name of the original Web Map with an added number, “(1)”, “(2)” etc. By default a copy is created in the group containing the original Web Map.
If all the parameters are correct, press “Clone”. A copy of the map will be created.
After the cloning process is completed successfully you will be redirected to “Update resource” page where you can change the settings of the newly created copy.
See the process of cloning a Web Map in our video:
Watch on [youtube](https://youtu.be/Ra3rzjz3-LA?si=tpO0k-Zn9NCSop9K).
If you wish to create a copy in a **different folder**, press the magnifying glass icon at the end of the “Resource group” field. See detailed description below.
## Clone to another group
A magnifying glass icon in the right end of the “Resource group” field opens the group selection pop-up window.
This window contains the following elements:
1. Search bar and path to the resource the copy will be created in
2. Return to the initial folder (the one containing the original Web Map) **|<**, refresh the resource tree state and close the window
3. Option button to select a group (folder)
4. Open the selected group (folder)
5. Create new resource group (folder)
6. Clear selection
7. Button that complets group selection.

If a group (folder) is selected, the button reads “Clone to selected group”. If no group is selected, it reads “Clone to this folder”, in this case the copy will be created in the group currently open (the path to it is indicated in the top panel of the pop-up window).

Use the second way to copy a Web Map to the main resource group (marked by a house icon in the path panel).
## Clone to a new group
If you need to create a new group, click on the folder icon with a plus in the bottom left corner of the pop-up window.

A field will appear where you need to enter the name for the new group. To confirm group creation click the blue button with a tick.

The group witll appear in the list.
New group is created inside the group that is open in the window.
# webmap_create.html.md
# How to create a Web Map
[Web GIS](description.md#ngcom-description) allows you to display geodata on Web Map and view it through built-in [web client](../../docs_ngweb/source/webmaps_client.md#ngw-webmaps-client).
## Create Web Map
#### WARNING
Make sure all [Vector layers](data_upload.md#ngcom-vector-layer), [Raster layers](data_upload.md#ngcom-raster-layer) and [PostGIS layers](data_connect.md#ngcom-postgis-layer) which you want to display on the new Web Map have [Styles](styles.md#ngcom-styles) created for them.
#### NOTE
Your Web GIS already has one ready-to-use Web Map. You can use it for geodata visualization or create an unlimited number of new Web Maps. By default there’s one basemap added to this Web Map - OpenStreetMap Standard. As soon as you add any other additional basemap to the Web Map, OpenStreetMap Standard will switch off.
1. Open Resource group where you want to create Web Map (by default, from the main page of Web GIS you access the Main resource group);
2. Press **Create resource** and select **Web Map**;
3. In the opened dialog, go to Resource tab and type a name for the new Web Map in the field Display name;
4. Go to Layers tab and using Add layer dialog window select the resources ([Basemaps](data_connect.md#ngcom-basemap-layer), [Styles](styles.md#ngcom-styles) or [WMS layers](data_connect.md#ngcom-wms-layer)) which you want to display on your Web Map;
5. Select layers one-by-one using a layer tree and set their properties in the right section of the dialog window. For [WMS layers](data_connect.md#ngcom-wms-layer) it is recommended to select Image as an adapter. If you select Tiles adapter, you will quickly use up all available connections and other layers on the map will not be shown until these connections are free again.
6. The Settings tab is used to allow layer editing and enable annotations, set Web Map [extent](../../glossary.md#term-Extent) and a title if it needs to be different than resource name.
7. Press **Create** button. If Web Map is created successfully, you’ll see its name in Child resources pane of the relevant Resource group.
#### NOTE
You can set the content of geodata attributes displayed on the Web Map in Vector layers and PostGIS layers settings. Read more about this option [here](../../docs_ngweb/source/layers_settings.md#ngw-attributes-edit).
#### NOTE
When data is uploaded to Web GIS [with desktop app QGIS](../../docs_ngconnect/source/ngc_data_transfer.md#qgis-project), a Web Map can be created automatically.
Read more about Web Map creation [here](../../docs_ngweb/source/webmaps_admin.md#ngw-webmaps-admin).
## Open Web Map
1. Go to the Properties window of the created Web Map from the relevant Resource group;
2. Select Web Map ‣ Display on the right side of Web GIS [admin console](../../docs_ngweb/source/admin_interface.md#ngw-admin-interface). Web Map will open in a web client which allows to view and edit geodata.
Read more about Web Map web client [here](../../docs_ngweb/source/webmaps_client.md#ngw-webmaps-client).
#### WARNING
We do not recommend turning on more than 1 [WMS layer](data_connect.md#ngcom-wms-layer) on Free/Mini plan and 3 WMS layers on Premium plan. Otherwise slow connections with external WMS servers might use up all available similtaneous connections, slowing down considerably (or stopping altogher) the rendering of all your Web Maps and making [admin console](../../docs_ngweb/source/admin_interface.md#ngw-admin-interface) unavailable.
## Add a description
1. Open Resource group containing the Web Map;
2. Click on **Update** (pencil icon) next to your Web Map;
3. Switch to **Description** tab, set descriptive text, hyperlinks and insert a map legend image via URL or paste it from the clipboard;
4. Click on **Save** button;
5. Display Web Map. Menu bar with **Description** button (*info* icon) is located on the left side of the workspace. Information presented there reflects the description you’ve just set;
6. To share Web Map with the description open, copy the link from your browser address bar. The link should end with **panel=info**. Clicking on such a link will load a Web Map with description opened.
[Example](https://demo.nextgis.com/resource/5201/display?panel=info) of a Web Map showing a legend.

Legend is also viewed in the layer tree, see [more on how to set it up](https://docs.nextgis.com/docs_ngcom/source/legend.html).
# webmap_set.html.md
# Web Map Settings
Using the control panel administrator can set a number of general settings for all Web Maps in NextGIS Web:
* Visibility of the navigation menu for guests;
* Identification popup parameters;
* Measurement units;
* Address search parameters;
* Legend visibility.

## Navigation menu vizibility
You can hide the navigation menu for guests. While veiwing your Web Maps, guests will not have access to the main dropdown menu in the top right corner that has link to the main resource group.
In the Control panel of your Web GIS go to the Web Map settings ([Fig. 580.](#admin-webmap-panel-settings-pic)) and enable the option *Hide navigation menu for guest*.

## Identify panel
The section regulates the following parameters:
* The radius of the area around the object within which the identification works;
* Enabling or disabling geometry info;

## Measurements
The section sets the parameters responsible for various measurements on the Web Map:
* Units of length measurement (according to the selected SRS)
* Units of measurement of areas (in accordance with the selected SRS)
* Degree format
* Coordinate system for calculating measurements
## Address search
NextGIS Web address search is performed through one of the two data bases (providers):
* Nominatim (OpenStreetMap) - used by default
* Yandex.Maps - an external geocoder with API key
The following parameters can be set up:
* “Enable” - the search results on the Web Map will include not only the attribute data but also the address base if there are matches
* “Limit by Web Map initial extent” - the search will be performed within the extent set in the Web Map settings
* “Provider” - defines the geocoder used for address search. OpenStreetMap by default, can be changed to Yandex.Maps
* “Limit search results to countries” - while using OSM, if a country code is specified (de, fr, gb etc), the search results will only include matches from the selected country’s territory
* “Yandex.Maps API Geocoder Key” - when Yandex.Maps is selected as provider, this is the field to enter the API key. Users obtain the keys independently by signing up on [https://developer.tech.yandex.ru](https://developer.tech.yandex.ru).

### Disabling address search
Address search can be turned off. In that case the search will only be performed in the feature attributes of the layers added to the Web Map (except the basemap).
From the control panel go to [Web Map settings](https://docs.nextgis.com/docs_ngweb/source/admin_tasks.html#web-map-settings). Set the toggle of the “Address search” section to the off position.

### Selecting search provider
NextGIS Web can use one of the two data bases for searching: Nominatim of OpenStreetMap or Yandex.Maps API Geocoder
By default the OSM search is used.
To select a provider, go to control panel and open [Web Map settings](https://docs.nextgis.com/docs_ngweb/source/admin_tasks.html#web-map-settings). In the “Address search” section use the dropdown menu of the “Provider” field to select the desired geocoder.

To use Yandex.Maps enter your API key in the field on the right. API keys can be obtained by users signed up on [https://developer.tech.yandex.ru](https://developer.tech.yandex.ru).

### Limit search area
You can limit the search area to the Web Map’s initial extent.
From the control panel go to [Web Map settings](https://docs.nextgis.com/docs_ngweb/source/admin_tasks.html#web-map-settings). Set the toggle of the “Limit by Web Map initial extent” to the on position.

While using OSM, you can also limit the search to a particular country. In the field “Limit search results to countries” enter the code of the country using the ISO of the OSM data base: de, gb, fi etc. To find out the code, use the search on [https://www.openstreetmap.org](https://www.openstreetmap.org).

# webmaps_admin.html.md
# Adding Web Maps
There could be several Web Maps in NextGIS Web. For example one map is for work, another is for public access and third is for testing of layer styles.
Each Web Map has its own URL address. Different access permissions for Web Map viewing can be set for users and groups.
Web Map displays layers. They can be turned on or off by the user. You can set the [order](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#layer-draw-order) of the layers, default layer [visibility](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#admin-webmap-create-layers) and create layer [groups](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#layer-groups). Groups on a map do not relate to resource groups in the Control Panel. Groups may be nested.
To view Web Map in browser, press  next to its name in the resource list or open the resource page and select **Display** in the Actions panel on the right. It will open in a [web viewer](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html).
## Creating a Web Map
First upload the data to your Web GIS as [layers](https://docs.nextgis.com/docs_ngweb/source/layers.html).
To create a Web Map, open the resource group where you want to add it, press **Create resource** button and in the pop-up window select “Web Map”. (see [Fig. 513.](#ngweb-admin-layers-create-webmap)).

Create resource dialog for a Web Map will open, see [Fig. 514.](#admin-webmap-name).

Enter Web Map display name that will be visible in the administrator interface and in the Web Map viewer. (You can set up a title to be displayed in Web Map viewer in the [Settings tab](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-map-settings).)
“Keyname” field is optional.
You can also add resource description and metadata on the corresponding tabs.
If you want to create a copy of an existing Web Map, you can [clone](https://docs.nextgis.com/docs_ngweb/source/webmap_clone.html) it.
## Web Map Layers
In the “Layers” tab you can add, group or remove layers and change their order using the buttons “Add layer”, “Add group”, “Customize draw order” and “Delete layer” (X at the end of each row).

To view the data of the layer on a map, you need to create at least one layer style. More on creating styles for different layer types [here](../../docs_ngcom/source/styles.md#ngcom-styles).

If the layer you want to add doesn’t have a style yet, you click on the  icon next to its name. The layer resource opens in a separate tab where you can create a style for it.

Then return to the tab where the layer picker is open, click  Refresh and select the newly created style.
You can add multiple styles at once. The layers containing selected styles are marked with blue dots. Navigate between resource groups and tick the styles of various layers you want to add. The **Pick selected** button displays the total number of selected styles. To clear the selection press the  button next to it.

You don’t need to go the style list of the layer to select the style. Press the  button to the right of the layer name to auto-select the first style.
### Properties of Web Map layers
Layers of a particular map have several settings, see [Fig. 519.](#admin-webmap-create-layers).

“Enabled” checkbox sets default visibility of a layer.
When the **Identifiable** flag is on, a click on the map opens the [Identify panel](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-ident) with the information about the layer feature. Untick it to have the layer ignored by the identification.
The “Transparency” field sets the layer transparency on a map between 0% (opaque) and 100% (completely transparent).
We recommend setting the “Adapter” field to “Image” (a single image for the entire map), unless there are some special requirements. Alternatively, you can choose “Tiles” (images of 256 x 256 pixels).
You can also set up a scale range. Min scale corresponds to the smaller image, max scale - to the larger, more detailed image. For example, if you want a layer to be displayed in scales between 1 : 250,000 and 1 : 5,000, the higher number (250,000) is the minimal scale.
#### NOTE
Max and min scale can be set not only using the Web Map’s Layers tab, but also in the layer style itself (See an [example](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#osm-water-line)). If the layer should not be displayed in a certain range of scales, we recommend to mark it in the Web Map’s layer settings. If the scale limit is only set within the style, empty tiles will be generated in other scales, which is less efficient.
To go back to the layer list, press **Hide details**.
### Layer groups
Layers added to Web Map can be gathered into groups. It will only affect the layer tree displayed on the map itself, making the legend more legible. It does not affect the actual resource group contents.
To add a new group press **+ Group**. To put a layer into a group, drag and drop.

**Expanded** option defines the way the layer group is presented in the layer tree when the Web Map is opened.
If **Exclusive** is ticked, layers in the group will only be displayed one at a time. If you activate a layer, all other layers of the group are automatically hidden. It can be handy if you have, for example, a group of satellite data that completely overlaps.
To go back to the layer list, press **Hide details**.
### Layer draw order
The order of the layers on a map can be different from the order in which they appear in the tree. Click “Customize draw order” in the “Layers” tab of the map settings. It allows to choose the order of the displayed layers without affecting the groups.

To go back to the list of layers, press **Back to layers and groups**. To restore the initial layer order, press **Use default draw order**.
Press **Save** to save the changes.
## Basemaps
“Basemaps” tab allows to add and remove basemaps using corresponding buttons “Add” and “Remove” or [disable basemaps](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-map-no-base) altogether.

For each basemap, you can set up a custom name different from the name of the resource.
If “Default basemap” is checked, this basemap will be visible when the Web Map is opened.
“Opacity” field sets basemap transparency on a map in a range between 0 and 100%.
### Creating Basemap
Press **Create resource** button and select **Basemap** ([Fig. 524.](#ngweb-admin-create-basemap)).
In the opened window enter the name of the resource that will be displayed in the administrator interface ([Fig. 525.](#ngweb-admin-basemap-name)).

The “Description” and “Metadata” of the resource are configured on the corresponding tabs ([Fig. 526.](#ngweb-admin-basemap-desc)). On the “Description” tab you can add any text describing the content.

In the “Basemap” tab you must enter the URL-address of the TMS service ([Fig. 527.](#ngweb-admin-basemap-param)). There are two ways to do so:
* Use the search bar to find a map in the [QuickMapServices catalog](https://qms.nextgis.com/). After a map is selected, other fields will be filled in automatically.
* Enter the address manually.
The basemap will be previewed below. Press  **Toggle basemap** and move the opacity slider to compare it to the standard OSM basemap.

#### HINT
Want to be independent of the basemap provider?
Deploy your own self-hosted basemap with [NextGIS GeoServices](https://nextgis.com/nextgis-geoservices/)!
### Web Map with no basemap
By default a Web Map is created with OpenStreetMap basemap. If you need a map without a basemap, on the Basemap tab go to **Additional settings**.

In the Additional settings section tick **Disable basemaps**.

In this section you can also set up the background color. By default it’s white. This color is visible if you have no basemap or your basemap has transparancy.
### How to use any layer in your Web GIS as a basemap
Any layer (style) created in Web GIS can be used as a source of a tile service and connected as a **basemap**.
To do this, you should:
1. Create the required [layer](https://docs.nextgis.com/docs_ngweb/source/layers.html) (vector or raster) and a [style](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html) for it. Inside the style you’ll find a link marked **TMS service** - you will need it for step 3;
2. Enable [caching](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#tile-cache) (to speed up Web Map processing, for [Premium plan](https://nextgis.com/pricing-base/) only);
3. Create “Basemap” resource with unchecked “Use options from QMS” and the URL of the above-created TMS layer.
## Settings
In the “Settings” tab you can modify several parameters:
* title that will be displayed on the Web Map instead of resource name;
* legend visibility (more [here](https://docs.nextgis.com/docs_ngcom/source/legend.html));
* enable annotations ([more on annotations](https://docs.nextgis.com/docs_ngweb/source/annotation.html));
* select measurement spacial reference system;
* allow layer editing;
* set up initial and constraining [extent](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#extent);
* select [bookmark](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#bookmarks) resource;
* set visibility of panels and feature identification elements.

## Legend
Map symbols may need additional explanation. Paper maps and atlases use a separate page or an insert explaining what each symbol means.
In NextGIS Web you have two options to display the information on symbols used in a layer:
Display the map symbols in the layer tree. The markers of the layer styles will be used.
In addition, you can add detailed description of the map symbols in the [Description panel](https://docs.nextgis.com/docs_ngcom/source/webmap_create.html#add-a-description-and-map-legend) (“i” in a circle).
In NextGIS Web settings the term “legend” refers specifically to the map symbols displayed in the layer tree of the Web Map under the layer name.
Visibility settings of the legend can be modified at various levels, allowing customization for specific goals, from “display all legends” to “display the legend differently for specific layers of one Web Map”. Legend visibility can be set:
* for a layer of a Web Map
* for a Web Map (all layers)
* for the entire Web GIS
Legend visibility for a particular layer is set in the Layer tab of the Web Map settings.

Legend visibility for a Web Map is set in its Settings tab.

You can also set default legend visibility for the Web GIS: Control panel – Web Map – Legend. This setting will be used if both Web Map and the layer have “Default” selected for legend visibility.

Options for legend visibility are:
* Expand – the legend is displayed in the layer tree. If the style has multiple marker types or colors, a full list will be shown. To collapse the list click on the ^ symbol next to the layer menu.

* Collapse – the legend is displayed, but the list of the map symbols for a specific layer is collapsed when the map is opened. To expand it, click on a table symbol next to the layer menu.

* Disable – the legend is not displayed in the layer tree.

* Default – the higher level setting is used. For the layers that have “default” selected for legend visibility, the setting of the Web Map will be used. If the Web Map also has “default” selected, the visibility setting selected for the Web GIS is applied.

NextGIS Web GIS supports legends for both vector and raster layers. Raster data in geographic information systems can represent vegetation cover and its density, changes in elevation, and other similar indicators. In this case the legend will show the gradient steps and corresponding values of the parameter.

The way the legend is formed depends on the raster type:
* Multiband color - as it is RGB raster, the legend consists of red, green and blue squares;
* Paletted/unique values - each value is represented with the color it corresponds to;
* Singleband gray - it is a gradient, but the legend shows a set number of symbols (5 by default) marked by value range;
* Singledband pseudocolor - like singleband gray shows symbols marked by value range.
## Extent
On the Settings tab you can set up:
* Initial extent - part of the Web Map that is shown upon its opening;
* Constraining extent - users will not be able to zoom out or scroll past this extent.
Extent is determined by four parameters in degrees.
There are several ways to set them up.

**From layers** button allows to so use the bounding box of layer or layers to set up the map extent.
Click it, then in the pop-up window select layer or layers. The four coordinate fields will be filled automatically.

Click on the  button to set the extent by the combined extents of all the layers added to the Web Map.
Click  to draw a custom bounding box on a map.

Also you can enter the four coordinates manually.
After the Web Map is created, you can pick an extent in display mode and [set it as initial or constraining](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-webmap-update).
## Bookmarks
In the “Bookmark resource” field of the Settings tab you can select a vector layer with any type of geometry to use for bookmarks. The Web Map will show bookmarks panel (see [Fig. 542.](#ngw-bookmarks)) with names defined by “Label attribute” if it is set (see [Fig. 543.](#bookmark-attribute)).

## Hide or show panels and identification sections
In the “Additional options” of the Web Map settings you can set up visibility for the following elements:
* [Trackers](https://docs.nextgis.com/docs_ngweb/source/trackers.html#tracking-web-map) panel;
* feature attributes in the identification panel;
* feature geometry info in the identification panel.
For each of them you can choose one of three options: “Yes” - show, “No” - do not show, “Auto” - applies the default [option](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#ngw-contr-panel-webmap-settings) set up for the Web GIS a whole. To set the “Auto” option, click on the cross on the right side of the option field.

## Social
The “Social” tab is used to upload an image to be used as preview in social media.

## Final steps
After creating the map content and adjusting settings for all the layers, click “Save” button. A saved map will be shown in the list of maps.
Click an icon with a map in the list of Web Maps or select “Display” action in the tab on the Web Map properties page to open it in the viewer. While the Web Map resource page is open, you can also open the map by clicking the “View” button on the right. Web Maps viewer is described [here](webmaps_client.md#ngw-webmaps-client).
A Web Map URL displayed in the viewer may be shared with other users because it is static.
#### WARNING
After a map is deleted, its URL will no longer be available.
## Open Web Map settings
Click on  “Update resource” on the resource page, in the resource list or in the Web Map viewer.

If you open the settings from the map viewer, they are displayed in a pop-up window.

To view the changes in the layers without refreshing the whole page, select “Reset layers” in the Layers panel menu. Layers are updated to the newly saved settings without losing the current extend of the map.
When editing Web Map settings from the display screen, you can set the current extent as initial or constraining extent of the Web Map.

Web Map settings are available for the user who have [modify permission](https://docs.nextgis.com/docs_ngcom/source/permissions.html#) for the corresponding resource.
See how to modify settings from the Web Map viewer in our video:
Watch on [youtube](https://youtu.be/IZHborRY5xA?si=xjTIUyEDGEXfF0DQ).
## How to optimize Web Map performance
Web Maps show data rendered by the server. The more of this data you have, the more server resources are needed to render and the more time it takes. There are several techniques you can use to improve your map experience.
**Don’t show everything at once**
This is a universal recommendation. Does your user need to see everything after opening the Web Map for the first time? Typically, it is not informative. On broad scales (smaller zooms) it is advisable to show limited amount of data as a start.
**Scale range**
Set a range of [scale levels](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html?highlight=scale#admin-webmap-create-layers) for displaying data on a Web Map.
This will allow you to avoid requesting data outside this range and showing excess data where it is not essential.
**Caching**
Set up [caching](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html#tile-cache) for your layer styles.
In this case, already rendered data will not be re-requested. Note that, while technically it’s possible to turn on caching for rasters, this is not recommended.
**Services**
Today’s interactive map is often a complex system that might include connections to external services, such as basemaps, WMS, TMS services and more. If you use them on your map, overall speed on it will depend on their performance. Remove them if you don’t need them or at least turn them off not to show by default.
**Select Image as an adapter**
In the Web Map settings, go to the Layers tab and [select](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html?highlight=adapter#admin-webmap-create-layers) **Image** as an adapter to allow for faster data processing. We do not recommend using Tiles if it isn’t necessary. It slows down the entire Web GIS if large amounts of data are used.
**Raster styles instead of QGIS raster style**
If your map shows big rasters you can add few percents of performance by switching from QGIS raster styles to regular raster styles. Go to your raster, add a raster style (if possible), add them back to your Web map replacing QGIS ones.
# webmaps_client.html.md
# Web Map viewer
A special web application for viewing Web Maps is included in NextGIS Web (see [Fig. 554.](#webmap-client)).
To view the Web Map press  next to its name in the resource list or open the resource page and select **Display** in the Actions panel on the right. The following page will open:

Numbers indicate:
* 1 – map;
* 2 – map [panels](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-panels);
* 3 - open [Web Map settings](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#web-map-layers);
* 4 - [layer tree](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-layers) with layer menu buttons;
* 5 – [dropdown list of basemaps](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-basemap);
* 6 and 7 - [map tools](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-tools);
* 8 - [status bar](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-scale) and copyright.
## Zoom and rotation
The status bar (see [Fig. 554.](#webmap-client)) displays the current scale of the map. If you use the identify tool to click on the map, a pop-up window will show the coordinates of the point you clicked on and list map features if present in this point of the map.
You can change the scale of the map using zoom tools (see item 5 in [Fig. 554.](#webmap-client)). To reset the map to its initial extent, press the house icon.
There are some options to work with map:
* if you click on `alt + shift` simultaneously and execute round cursor movements around a monitor, a map will turn for a certain degrees to the right or to the left,
* if you simultaneously click on `shift` and select of the necessary part of a map on a monitor by a cursor, you will highlight this part and zoom in it on the map.
To view your current location on the map, press . See how it works in our video:
Watch on [youtube](https://youtu.be/HVvuDMX1pEo?si=YzQcqFMw-ge50qPA).
## Panels
On the left side of the workspace are the functional panels:
*  [Layers](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-layers)
*  [Feature identification](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-ident)
*  [Search](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-search)
*  [Annotations](https://docs.nextgis.com/docs_ngweb/source/annotation.html)
*  [Description](https://docs.nextgis.com/docs_ngcom/source/webmap_create.html#add-a-description-and-map-legend)
*  [Bookmarks](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#bookmarks)
*  [Share](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-share) here you can generate a link to the Web Map or an [embed code](https://docs.nextgis.com/docs_ngweb/source/embed_webmap.html)
*  [Print](https://docs.nextgis.com/docs_ngweb/source/print.html)
*  [Trackers](https://docs.nextgis.com/docs_ngcom/source/tracking.html)
## Map tools
Tools to work with the Web Map (see [Fig. 554.](#webmap-client) item 6) named from left to the right:
Top left:
*  zoom;
*  back to initial extent;
*  show my location.
Bottom left:
*  [Identify](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-ident)
*  [Zoom in](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#zoom-and-rotation)
*  [Zoom out](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#zoom-and-rotation)
*  [Measure distance](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#measuring-tools)
*  [Measure area](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#measuring-tools)
*  [Swipe](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-tools-swipe)
*  [Show cursor coordinates/extent](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#show-extent-or-cursor-coordinates)
See detailed descriptions below.
### Measuring tools
Map tools allow to measure distance (straight or segmented line) and area. Activate the tool and draw a line by clicking on the map. Double-click to finish line creation. You can draw multiple measuring lines on a map and compare results. To delete one of the measurement lines, press X on the measurement results lable. To clear selection, press the tool button again.

To measure area draw a custom polygon on the map. Double-click to finish the polygon.

Measurement units are selected in the [Control panel](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#ngw-contr-panel-webmap-measure)
### Swipe
Swipe makes the selected layer transparent to one side of the line.
To select a layer click on it in the layer tree (it will be highlighted in blue), then press the swipe button  (see [Fig. 557.](#ngweb-webmap-choose-layer)).

Use the square in the center to move the swipe and the circle on the line to rotate it 90 degrees.
Swipe makes it possible to “peek” under the selected layer and compare it with the substrate or another layer on the map. The tool will be useful if we want to compare changes in the terrain by satellite images for different dates (for example, to identify forest felling or floods).

### Show extent or cursor coordinates
A field can be added to the Web Map interface to show the coordinates of the current cursor position or the extent of the visible map area. To activate it, press the  button in the map tools panel.
The icon on the right indicates what is displayed. Click on it to switch between modes.

## Share
In the  “Share” panel you can:
* copy a link to the Web Map (the link includes zoom level and layer visibility);
* add the visible fragment of the Web Map to [favorites](https://docs.nextgis.com/docs_ngweb/source/favorites.html#ngw-favorites-wm-fragment);
* configure and copy the code for embedding the Web Map to a Web site.

## Link to a Web Map feature
The easiest way is to zoom in on the area and copy the link via the **Share** panel ([Fig. 554.](#webmap-client))
Using specially generated GET queries you can share a link to a particular feature of a layer. The link will open with the geographical context that you can select in the Web Map settings.
All you need to do is create links in the information systems. By clicking on them users will be directed to the map with the selected feature and context.
Such links can be automatically generated by your system integrated with NextGIS Web.
Example:
[https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6108&hl_attr=OSM_ID&hl_val=230629285&zoom=17](https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6108&hl_attr=OSM_ID&hl_val=230629285&zoom=17)
You can make such a link **manually**. Here’s what you need:
* Link to the Web Map: [https://demo.nextgis.com/resource/6118/display?panel=layers](https://demo.nextgis.com/resource/6118/display?panel=layers)
For the feature:
* hl_lid - layer ID (open the layer resource page and see the number in the URL, for example [https://demo.nextgis.com/resource/6114](https://demo.nextgis.com/resource/6114), here `hl_lid=6114`
* hl_attr – the name of the ID attribute field, for example `OSM_ID`;
* hl_val – the value of the ID field.
You can also add:
* zoom - value in numbers with 1 being the minimum.
Here’s the resulting link:
[https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6114&hl_attr=OSM_ID&hl_val=1058246738&zoom=17](https://demo.nextgis.com/resource/6118/display?panel=layers&hl_lid=6114&hl_attr=OSM_ID&hl_val=1058246738&zoom=17)

## Legend in the layers tree
The **Layer tree** panel  contains a list of all layer styles added to the Web Map.
The panel allows to:
* Disable/Enable layer visibility by ticking the checkbox on the left. You can also hide parts of a layer by selecting items in the Web Map lengend. It’s helpful for big projects where one layer may contain a variety of features grouped by value of an attribute.
* Change the order of the layers by dragging them within the layer tree. Refresh the page to restore the original order.
Click on the three dots next to the panel title to open the menu. In this menu you can:
*  Zoom to all layers;
*  Hide all layers;
*  Reset layers to the initial visibility setting without reloading the page,
*  Add layers;
*  Add group - creates a new group in the layer tree. To add layer to the group, drag and drop it.

If you want the current state of the map legend to be the default for this Web Map, click  in the bottom left corner.
More on how to [configure the legend](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-legend).
Functionality of the layer panel is presented in our video:
Watch on [youtube](https://youtu.be/4Pd5AKtoR2g?si=0lMooDE3ZzpO0xxz).
## Layer menu
Click on the three dots to the right of the layer name to open its menu. The following options are available:

*  **Zoom to layer** - sets the map extent so that all features of the select area are in it.
*  **Filter** - display only the features fitting [set conditions](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#filter).
*  **Feature table** - opens the layer’s [feature table](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-webmap) on the map.
*  **Edit on map** - activates the ability to to modify the features of the selected layer. To complete the process, open the dropdown menu again and select **Stop editing** ([read more here](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#edit-mode)) or click  on the map.
*  **Properties** - how the layer behaves on this particular Web Map ([more about layes on a Web Map](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#admin-webmap-create-layers)).
*  **Description** - view the description of the selected layer, if it has one.
*  **Remove layer** from the legend (to reset it, click  Reset layers in the panel menu).
*  **Edit style**, opens in a pop-up window, [more on style settings](https://docs.nextgis.com/docs_ngweb/source/mapstyles.html).
*  **Edit layer**, opens the layer resource settings in a pop-up window, more on [vector layer settings](https://docs.nextgis.com/docs_ngweb/source/layers_settings.html).
* **Identifiable** flag - when it is on, a click on the map opens the [Identify panel](https://docs.nextgis.com/docs_ngweb/source/webmaps_client.html#ngw-webmaps-client-ident) with the information about the layer feature. Untick it to have the layer ignored by the identification.
*  To change the transparency of the layer use the slider.
See how it works in our video:
Watch on [youtube](https://youtu.be/M4cThWxdaZg?si=8sohojUzoB8oovvY).
## Filter
For any vector layer you can add a filter. Select **Filter** in the layer menu. In the pop-up window add one or several conditions. If you add multiple conditions, you can select if all of them must be satisfied at once or any one of them is sufficient. [More on how filter conditions work](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#table-search-filter).

Click **Apply**. Only the features that answer the conditions are still displayed on the Web Map and in the Feature table.

You can also filter the features within a [selected area](https://docs.nextgis.com/docs_ngweb/source/feature_table.html#ngw-feature-table-filter-area).
## Feature identification
To get information about features on the Web Map activate the  identify panel. Click anywhere on the map to get info on vector features and raster pixels.

If a raster layer has raster attribute table, classes from it are displayed alongside the numerical value of the pixel.
#### NOTE
To use this feature, create raster layer via [Web interface](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-create-raster-layer). Combine the .TIF and the corresponding .XML file into a ZIP-arhive. Then select this archive while creating a raster layer.

If there are multiple features (for example a point and a line going through it), the identify panel will show the feature of the topmost layer. To view information on the other features click on the downward arrow to the right of the feature name and select the feature from the dropdown list.

To clear selection, click on  in the bottom left corner. When no feature is selected, this button looks like this: .
To configure how far from the clicks the features can be to be identified and what parameters are displayed in the panel go to the [Control panel](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#ngw-contr-panel-webmap-ident).
You can turn off identification for a particular layer in the layer menu. Also, you can disable identification for individual layers and modify their order in the [Web Map settings](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#ngw-map-layers).
To modify attribute values of the feature, click on the pencil icon in the top right corner of the panel ([more details](https://docs.nextgis.com/docs_ngweb/source/feature_edit.html#ngweb-editing-when-viewing-map)).

## Search
**Search** is performed using three sources:
1. Coordinates.
2. Attributes of layers added to a map.
3. Address database (OpenStreetMap or Yandex.Maps, depending on [address search settings](https://docs.nextgis.com/docs_ngweb/source/webmap_set.html#address-search)).
Results are shown as user inputs text and are sorted in this order: points on the map matching the coordinates, then feature numbers for attribute search and finally full addresses.
After a click on a search result map changes extent to show selected feature.

### Search by coordinates
To find a point using the coordinates, enter the latitude and longitude in degrees, minutes and second, degrees and decimal minutes or decimal degrees (make sure to use straight single and double quotes), for example:
```bash
79 W 43 N
W 79 N 43
-79 43 (the results will contain two points: 79 W, 43 N and 43 E, 79 S)
79- 43
-79 W 43 N
79°4'14.08" W 43°4'59.37" N
-79°4'14.08" 43°4'59.37"
-79 4.25 W 43 4.95 N
-79 4.25 43 4.95
79.068493 43.079920
79.068 W 43.08 N
```
See how it works in our video:
Watch on [youtube](https://youtu.be/tjPHvUWtpKs?si=Od-yUzIhM0yr4JwM).
When the feature table is opened on the Web Map, you can filter features by area ([read more](https://docs.nextgis.com/docs_ngweb/source/admin_interface.html#ngw-feature-table-filter-area)).
## Basemap
To change a basemap use the dropdown list (see [Fig. 554.](#webmap-client)). By default you can select:
* OpenStreetMap
* None - disable the basemap so that a white background is shown instead.
You can add other basemaps, see the instructions in [Adding resources](https://docs.nextgis.com/docs_ngweb/source/webmaps_admin.html#creating-basemap).
Usually a basemap is shared by thrid-party services in the Internet. Users can not influence their content.
If the Internet access is expected to be poor or if the Web GIS is deployed in local network without access to the Internet, you can add base data as Web GIS layers (for example, a [Tileset](https://docs.nextgis.com/docs_ngweb/source/layers.html#ngw-tile-set)) or deploy [NextGIS GeoServices](https://docs.nextgis.com/docs_geoserv_prem/source/intro.html) to host your own basemaps.
## Contact Web GIS owner
User viewing a publicly available Web Map can send a message to the Web Map administrator.

Clicking this icon redirects to the account page (you have to log in with your [NextGIS ID](https://docs.nextgis.com/docs_ngcom/source/create.html)). Fill the message form:

The Web GIS administrator will receive your message and email address so that they can reply by email.
# wildfire_analysis.html.md
# Wildfire Susceptibility Analysis (Topographic)
Topographic wildfire susceptibility analysis using slope, Heat Load Index (Bohner & Antonic 2009), TPI, TRI, inverse TWI, and elevation. Includes Rothermel fire spread factor. Note: vegetation, climate, and anthropogenic factors not included.
Inputs:
* Terrain Analysis Package (ZIP). ZIP file from [Comprehensive Terrain Analysis](https://toolbox.nextgis.com/t/terrain_analysis) containing DEM, slope, aspect, TWI, TPI, TRI, and manifest.json
* Weight: Slope. Weight for the slope indicator (default: 0.25)
* Weight: Heat Load Index. Weight for the Heat Load Index indicator (default: 0.25)
* Weight: TPI. Weight for the Topographic Position Index (default: 0.15)
* Weight: TRI. Weight for the Terrain Ruggedness Index (default: 0.10)
* Weight: TWI (inverted). Weight for the inverted TWI indicator (default: 0.15)
* Weight: Elevation. Weight for the elevation indicator (default: 0.10)
* Hotspot Threshold. WTI value above which areas are classified as hotspots (default: 70)
* Spectral Indices Package (ZIP). Optional ZIP from spectral_indices with vegetation index aggregates. When provided, a vegetation indicator is added to the weighted overlay.
* Weight: Vegetation Index. Weight for the vegetation index indicator (default: 0.10). Only used when spectral_zip is provided. Other weights are scaled down proportionally.
Outputs:
* Wildfire Analysis Package (ZIP). ZIP archive with wildfire susceptibility rasters, vectors, statistics, and manifest
* Summary. Human-readable summary of the wildfire analysis results
* Manifest JSON. JSON manifest string describing all outputs
Launch the tool: [https://toolbox.nextgis.com/t/wildfire_analysis](https://toolbox.nextgis.com/t/wildfire_analysis)
Example:

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# wurman_dots.html.md
# Wurman Dots
#### NOTE
Qt6 compatible
Create Wurman dots using a square or hexagonal grid.
Wurman Dots is a method for visualizing the density of a point layer. The area is split into cells, each of them is then marked by a circle. The inner circle vary in size representing the density of objects within each corresponding grid cell.

After installation you can find the plugin in the Vector menu. It has two options of grid generation, one creates a grid based on cell size, the other - based on cell count.

Settings:
* Select a point layer (EPSG:3857 only), it is the only required field, for the other fields you can use default settings;
* You can apply the algorithm to the selected features only by ticking this option;
* Configure cell parameters (depending on the grid generation method):
> * Set the grid cell size in meters (the default is 50000), OR
> * Set the number of cells along the shorter side of the extent (the default is 10);
* Select grid type (square or hexagonal);
* If you want to create circles in the cells that have no points in them, tick “Create continuous grid of fixed circles”;
* Enter paths to output files if you wish. By default, temporary layers will be created.
* If you don’t want to add the resulting layers to the map, untick “Open output file after running the algorithm”.

The fixed circles and density circles are separate vector layers. For each of them you can modify color, opacity and other style parameters.
See how the plugin works in our video:
Watch on [youtube](https://youtu.be/5cwiV16rVGo?si=uX1W4ncIu3zuIDjI).
# xml_decl_to_vector.html.md
# Convert forest declaration into geodata
Converts XML with forest declaration into vector layer.
Inputs:
* Input data – XML file or ZIP archive with several XML files
* Vector file format – option to specify the output file format: geojson, shp, gpkg or tab. If not specified, gpkg will be applied by default.
* ID of output geodata – prefix to be used in output file’s name
* Create layer with binding – option to create additional layer with binding line
Outputs:
* ZIP archive with converted data
Launch the tool: [https://toolbox.nextgis.com/t/xml_decl_to_vector](https://toolbox.nextgis.com/t/xml_decl_to_vector)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# xml_plv_to_vector.html.md
# Convert XML: forestReforestation
Convert XML: forestReforestation to geodata.
Inputs:
* Source file. Single XML file or ZIP with any XML.
* Output format. One of output formats: GPKG, GEOJSON, SHP, TAB.
Outputs:
* ZIP archive with polygon and line files in the chosen format.
Launch the tool: [https://toolbox.nextgis.com/t/xml_plv_to_vector](https://toolbox.nextgis.com/t/xml_plv_to_vector)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# xml_tol_to_vector.html.md
# Convert XML: TaxationDescriptionCuttingArea
Convert XML: TaxationDescriptionCuttingArea to geodata.
Inputs:
* Source file. Single XML file or ZIP with any XML.
* Output format. One of output formats: GPKG, GEOJSON, SHP, TAB.
Outputs:
* ZIP archive with polygon and line layers in the chosen format.
Launch the tool: [https://toolbox.nextgis.com/t/xml_tol_to_vector](https://toolbox.nextgis.com/t/xml_tol_to_vector)

**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.
# yandex_datalens.html.md
# How to upload data to Yandex DataLens
## Prepare the file
* [Order data](https://data.nextgis.com/en/) for your area of interest, for example in GeoPackage format. Most likely the product you need is the Basemap.
* Go to the [orders](https://data.nextgis.com/en/orders/actual/) page and download the archive when it’s complete.
* **Unpack** the archive.
* Select the layer, for example, administrative boundaries of the counties (boundary-polygon-lvl6) or settlements (settlement-point).
* Use the [free online converter](https://toolbox.nextgis.com/operation/vector2datalens) to prepare vector layer for DataLens by converting it to a fitting format. The output of this converter is a CSV file.
## Upload to DataLens
1. **Create connection**
On the main page of the [DataLens service](https://datalens.yandex.cloud) click Connections: **Create**. Then select `Files and services --> Files`.
In the top left corner click **Upload files**.

After the file is uploaded, click **Create connection** in the top right corner.
#### NOTE
Make sure that the “Columns header” is set to “Yes”.

Choose a workbook or create a new one. After selecting a workbook, click **Create**, enter the name for the new connection in the pop-up dialog and click **Create** in that dialog.

1. **Create dataset**
Click **Create dataset** in top right corner and select the connection you’ve just created.

Go to the “Fields” tab. For the first field, set the type to *Geopolygon* / *Geopoints* using the dropdown menu.

Click **Save** in the top right corner. Enter a name for the new dataset and save it.
1. **Create a chart**
After the dataset is created, the button **Create chart** in the top right corner becomes active. Click it to create a new chart.

Select your **dataset** in the dropdown menu on the left.
In the section to the right use the dropdown menu to select *Map* as the **chart type**.
Below choose the **field type** in the dropdown menu so that it matches the geometry of your layer: **Polygons (Geopolygons)** or **Points (Geopoints)**.
Drag the Geopolygon/Geopoint field to the “Polygons”/”Points” section to create the visualization.
Click **Create** button in the top right corner. Enter the name for the chart (the default value is ‘Dataset name - Map’) and save it.

# zmu_data_analysis.html.md
# Winter route census: data analysis and reporting
Analysis of data on wildlife distribution and abundance obtained during the winter route census, and generation of analytic reports in accordance with the “Methodology for game species count using the winter route census” approved by Order No. 49 of the Federal State Budgetary Institution “Federal Research Center for Hunting” dated November 22, 2023. All data is taken from NextGIS Web.
Input:
* Web GIS Address `Required field`
* Web GIS login
* Web GIS Password
* “WRC Data” resource group ID `Required field` - ID of the resource group with the deployed WRC system (by default, the name of the group is “WRC Data”)
* Start date - The starting date for the WRC data used to generate the report, in the format DD.MM.YYYY. If you leave the field empty, the report will be generated for the entire time before the end date.
* End date - The end date for the WRC data used to generate the report, in the format DD.MM.YYYY. If you leave the field empty, the report will be generated for the time period from the start date to today.
* Adding a Web map - When selected, it generates a Web map with routes in the user’s web GIS and adds a link to it in the list.
* The accounting strip width - The width of the accounting strip used in compiling the statement of calculation of the number of birds in the study area, in km. This parameter is required when taking into account bird species in the process of winter route census
Output:
* .DOCX report file
Launch the tool: [https://toolbox.nextgis.com/t/zmu_data_analysis](https://toolbox.nextgis.com/t/zmu_data_analysis)
**Try the tool in action**
1. Click on the **Demo** button above the tool form. The fields are filled in with demo values.
2. Click on the **Run** button.