GeoJSON — это формат для кодирования различных структур географических данных. Объект GeoJSON может представлять геометрию, объект или набор объектов.
В 2015 году Инженерная группа Интернета (IETF) совместно с авторами исходной спецификации сформировала рабочую группу GeoJSON для стандартизации GeoJSON. RFC 7946 был опубликован в августе 2016 года и представляет собой новую стандартную спецификацию формата GeoJSON, заменяющую спецификацию GeoJSON 2008 года.
GeoJSON поддерживает типы геометрии Point , LineString , Polygon , MultiPoint , MultiLineString , MultiPolygon и GeometryCollection .
Feature содержит объект геометрии и дополнительные свойства, а FeatureCollection представляет список объектов.
Например, дом, дорога и автобусная остановка представляют собой три разных объекта . Все они могут иметь разную геометрию. Дом может быть многоугольником , дорога может быть линией , а автобусная остановка может быть точкой . Все они представляют собой окрестности, которые в GeoJSON называются FeatureCollection .
EntityFramework (EF) — это платформа объектно-реляционного сопоставления (ORM) с открытым исходным кодом для Microsoft .net. Это позволяет нам использовать строки базы данных в качестве экземпляров классов.
Well-known Text (WKT) — язык текстовой разметки для представления объектов векторной геометрии на карте, систем пространственной привязки пространственных объектов и преобразований между системами пространственной привязки. Таким образом, это текстовые изображения геометрических объектов.
GeoJSON для EntityFramework — это библиотека .net, которая позволяет создавать выходные данные GeoJSON из пространственных данных EntityFramework или входных данных WKT. Другими словами, он сериализует различные типы геометрических объектов в GeoJSON. Он не ограничивается только объектами EF, но также может сериализовать входные данные WKT.
Визуальный Бейсик
Imports alatas.GeoJSON4EntityFramework
Function GetGeoJSONFromDB() As String
Using db As New SpatialExampleEntities
Dim data = From row In db.SampleTables Select row.SpatialData
Dim features as New FeatureCollection(data.ToArray)
Return features.Serialize(prettyPrint:= True )
End Using
End Function
С#
using alatas . GeoJSON4EntityFramework ;
public string GetGeoJSONFromDB ( )
{
using ( Entities db = new Entities ( ) )
{
DbGeometry [ ] data = ( from row in db . SampleTables select row . SpatialData ) . ToArray ( ) ;
FeatureCollection features = new FeatureCollection ( data ) ;
return features . Serialize ( prettyPrint : true ) ;
}
}
Визуальный Бейсик
Imports alatas.GeoJSON4EntityFramework
Function GetGeoJSONFromWKT() As String
Dim WKTs = { "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" ,
"MULTIPOINT ((10 40), (40 30), (20 20), (30 10))" ,
"LINESTRING (1 1, 2 2)" }
Dim features as New FeatureCollection(WKTs)
Return features.Serialize(prettyPrint:= True )
End Function
С#
using alatas . GeoJSON4EntityFramework ;
public string GetGeoJSONFromWKT ( )
{
string [ ] WKTs = {
"POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" ,
"MULTIPOINT ((10 40), (40 30), (20 20), (30 10))" ,
"LINESTRING (1 1, 2 2)"
} ;
FeatureCollection features = new FeatureCollection ( WKTs ) ;
return features . Serialize ( prettyPrint : true ) ;
}
Чтобы установить GeoJSON для Entity Framework, выполните следующую команду в консоли диспетчера пакетов.
Entity Framework 6
Install-Package GeoJSON4EntityFramework
Entity Framework 5
Install-Package GeoJSON4EntityFramework5
Загрузите последнюю версию и добавьте ссылки на свой проект вручную.
Вы можете проверить результаты с помощью http://geojson.io и http://geojsonlint.com.
Тестовые данные извлечены из OpenStreetMap®. OpenStreetMap® — это открытые данные, лицензированные по лицензии Open Data Commons Open Database License (ODbL) от OpenStreetMap Foundation (OSMF).