OpenGIS (Open geodata interoperation specification, ogis-open geographic data interoperability specification) was proposed by the American OGC (OpenGIS Association, OpenGIS Consortium. As a non-profit organization, OGC aims to promote the adoption of new technologies and business methods to improve the interoperability of geographic information processing ), it is committed to eliminating geographic information applications (such as geographic information systems, remote sensing, land information systems, automatic drawing/facility management (AM/FM) Systems) and other information technology applications, establish a non-boundary, distributed, Component-Based Geographic Data Interoperability Environment.
OpenGIS aims to develop a specification so that application system developers can use any geographic data and geographic processing distributed on the Internet in a single environment and workflow. It is committed to establishing a non-boundary, distributed, Component-Based Geographic Data Interoperability Environment, compared with the traditional geographic information processing technology, the GIS software based on this specification has good scalability, scalability, portability, openness, interoperability and ease of use.
OpenGIS defines a set of data-based services, and data is based on feature ). The so-called element is simply an independent object. It may be a polygon building in a map and an independent entry in a database. Elements have two necessary components: geometric information and attribute information. OpenGIS divides geometric information into four types: points, edges, faces, and ry sets. linestring is a subclass of edges, and polygon is a subclass of edges. That is to say, the geometric type defined by OpenGIS is not just the common point, line, and polygon. It provides more complex and detailed definitions, enhancing the scalability in the future. In addition, the composite mode is used in the design of geometric types. geometrycollection is also defined as a geometric type, similar to featurecollection) it is also an element. Attribute information is not subject to too many restrictions. You can set it in actual applications based on specific implementations. Elements of the same geometric type and attribute type can be stored in a data source. A data source can have only one element type. Therefore, element types can be used to describe elements with similar attributes. In an object-oriented model, element types can be understood as a class, while elements are instances of the class. GIS middleware can be used to retrieve data from data sources for WMS servers and WFS servers. The WMS server receives requests and can return final data in different formats based on different request content. For example, WMS can return map fragments in common image formats for end users to read (similar to Google
Maps). A map is generated based on a style file (SLD). It describes the line width and color of the map; WMS can also return georss and kml to communicate with other map services. The WFS server can also receive requests, but WFS will return the geographical information data in the GML format. GML is an XML-based data format. It can completely reproduce data and is also an important form of OpenGIS data source. That is to say, the GML returned by WFS can continue to serve as the data source. In WFS requests, OpenGIS defines a filter standard to filter data and make WFS more flexible. On the other hand, WFS also supports submitting client-side data modifications through WFS-t. In general, WMS is "read-only", while WFS can be read and written. After a while, I found that my understanding is very limited. If there is a mistake, I hope the readers will not correct it. In addition, the whitelist has not been involved. To learn more, please download the OpenGIS standard for reading.
OpenGIS is an open standard, but it has not only played a role in the Open Source world, but many commercial software also supports OpenGIS standards. Of course, all the software mentioned here is open source software.
Geometric base class library
Representatives: JTs (Java), geos (C ++), and shapely (Python)
This type of geometric base library mainly implements the simple feature access standard of OpenGIS. Simply put, they encapsulate the geometry to a certain extent. Taking JTs as an example, based on the description of geometry in OpenGIS, JTs implements Java-based interfaces and inheritance relationships, and makes classes like point and linestring that can be used. In addition, these class libraries also realize the judgment of spatial location relationship of OpenGIS DE-9IM and some common calculation geometric methods (such as buffer ).
Such software is the basis of all GIS class libraries, just as ry is one of the foundations of GIS.
Data Source implementation
Representative: postgis (PostgreSQL), MySQL spatial
Data Source implementation mainly refers to the expansion of open source database space. Database space expansion not only supports geometric storage in data tables, but also provides SQL-Level Set relationship judgment. For example, you can directly use SQL to query points in a polygon.
Middleware
Representative: geotools (Java)
Middleware plays the role of connecting data and services in the system. Geotools reads data from various data sources (such as postgis, GML, shapefile, and WFS) and standardizes the data. The feature interface is defined in geotools. After reading data from different data sources, it is unified into the implementation of the feature interface that contains a geometry member (defined in JTs. In this way, further operations only need to be oriented to feature, eliminating the need for high-level software to interpret different data sources. In addition, geotools is fully implemented by the OpenGIS standard, including filter, coordinate conversion, and GML.
WMS/WFS Server
Representatives: geoserver (Java), mapserver (PHP)
The map server provides the map service to clients in the network. These map servers can receive uniform and standardized WMS and WFS requests and return data in multiple formats. This process has strict WMS/WFS specifications. Therefore, the implementation of the map server on the client will not have a great impact. Such a rule creates a possibility for public and joint map services.
Client
Representatives: openlayers/mapbuilder (JavaScript), udig (Java), qgis (C ++)
Clients can be divided into browsers and Desktop client programs. The B/S system client, represented by openlayers, is now very powerful. It can encapsulate WMS requests and implement the map slicing and loading function in a browser. In addition, the drag and zoom functions are also very complete, allowing cross-browser operations. The latest openlayers version also supports vector editing and can be submitted through WFS-t. The traditional desktop client is more powerful and supports a variety of data sources, including WMS and WFS. In addition, the editing function and operability are more powerful than those in browsers.
Shapefile
ESRI's shapefile format is a fact standard of GIS vector file format, usually composed of. SHP,. shx,. prj,. DBF and other files. The implementation software of OpenGIS generally supports reading and writing shapefile.Shapefile can be directly used as a data source in geoserver, but this method is not recommended because it is very simple. file-based data sources may cause poor performance and data loss..
GML
As one of the OpenGIS standards, GML describes geographical data based on XML. Compared with shapefile, XML is easier to read and write, and can be easily transmitted in various forms on the network. XML is also readable and understandable. Geotools implements gmldatastore, so in geoserver, GML can also be directly used as a data source (you need to download the GML extension ). At the same time, the GML data source provides implementation ideas and possibilities for the data source to be dynamic.
Postgis
Postgis is an open-source project supported by refractions in Canada. It provides spatial support for the open-source database PostgreSQL. After postgis is installed, a template database appears in PostgreSQL. When creating a spatial database, you only need to use postgis as the template. Postgis implements basic spatial operations at the SQL level. In addition, the vast majority of open-source GIS software (even those that do not strictly abide by the OpenGIS standards) support direct loading, reading and writing of postgis data tables.Undoubtedly, postgis is the best implementation of OpenGIS data sources.
MySQL spatial
MySQL is an open-source database giant. It has been added with the spatial extension function since mysql4.0 to implement the geometric data types specified by OpenGIS and simple space operations in SQL. However, from 4.0 to now, the spatial of MySQL has not been continuously updated and enhanced. In addition, MySQL does not fully support space operations on SQL (only supports the determination based on the minimum external rectangle), so MySQL is an unsatisfactory choice in open-source data sources. However, because MySQL is widely referenced in small projects, MySQL can also be used as the data source in some cases.
Db4o? : The possibility of using the object database as a data source
The system architecture of OpenGIS is completely based on an object-oriented model, while traditional relational databases and shapefile files are currently the mainstream applications. In the process of geographic description, the features of relational databases have not been fully utilized, and middleware is required to do ORM work. Imagine directly saving featuretype and features into the object database as objects. The entire system can be reduced at least theoretically. However, the performance of the object database needs to be further improved when the object database is used as the data source. However, subsequent integration with existing software should not be a problem, because db4o can directly store feature objects and geometry objects. However, the dependence of the generated data on the implementation is another problem: the data is closely coupled with the implementation, and the code is bound to the data, although db4o claims to support Java and. but it becomes a problem for other implementations.From this perspective, the object database as a data source is regressing.
Why is there no kml?
Kml, as a new standard, does not care whether it passes or not. It is mainly used for the transmission of geographic information on the network. Kml is a data form designed for the client. This is why it cannot replace the status of GML and is far stronger than GML in googleearth and many map applications. Compared with kml and GML, it is easy to understand. GML stores attribute data as elements, while kml stores attribute data in hypertext form. The former facilitates data reading, the latter facilitates client performance. Similar to kml, It is georss, and the effect is similar.