GeoJSON é um formato para codificar uma variedade de estruturas de dados geográficos. Um objeto GeoJSON pode representar uma geometria, um recurso ou uma coleção de recursos.
Em 2015, a Internet Engineering Task Force (IETF), em conjunto com os autores das especificações originais, formou um GeoJSON WG para padronizar o GeoJSON. RFC 7946 foi publicado em agosto de 2016 e é a nova especificação padrão do formato GeoJSON, substituindo a especificação GeoJSON de 2008.
GeoJSON suporta os tipos de geometria Point , LineString , Polygon , MultiPoint , MultiLineString , MultiPolygon e GeometryCollection .
O recurso contém um objeto de geometria e propriedades adicionais, e um FeatureCollection representa uma lista de recursos.
Por exemplo, uma casa, uma estrada e um ponto de ônibus representam três características diferentes. Todos eles podem ter diferentes tipos de geometrias. A casa poderia ser um polígono , a estrada poderia ser uma linha e o ponto de ônibus poderia ser um ponto . Todos eles representam uma vizinhança e isso é chamado de FeatureCollection no GeoJSON.
EntityFramework (EF) é uma estrutura de mapeamento objeto-relacional (ORM) de código aberto para Microsoft .net. Isso nos permite usar linhas do banco de dados como instâncias de classe.
Well-known Text (WKT) é uma linguagem de marcação de texto para representar objetos de geometria vetorial em um mapa, sistemas de referência espacial de objetos espaciais e transformações entre sistemas de referência espacial. Em resumo, é uma representação textual de objetos geométricos.
GeoJSON para EntityFramework é uma biblioteca .net que permite criar saída GeoJSON a partir de dados espaciais do EntityFramework ou entradas WKT. Em outras palavras, ele serializa diferentes tipos de objetos geométricos para GeoJSON. Não está limitado apenas a entidades EF, mas também pode serializar entradas WKT.
Visual Básico
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
C#
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 ) ;
}
}
Visual Básico
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
C#
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 ) ;
}
Para instalar o GeoJSON para Entity Framework, execute o seguinte comando no Package Manager Console
Estrutura de Entidade 6
Install-Package GeoJSON4EntityFramework
Estrutura de Entidade 5
Install-Package GeoJSON4EntityFramework5
Baixe a versão mais recente e adicione as referências do seu projeto manualmente
Você pode validar resultados com http://geojson.io e http://geojsonlint.com
Dados de teste extraídos do OpenStreetMap®. OpenStreetMap® são dados abertos, licenciados sob a Open Data Commons Open Database License (ODbL) pela OpenStreetMap Foundation (OSMF)