GeoJSON 是一种用于编码各种地理数据结构的格式。 GeoJSON 对象可以表示几何图形、要素或要素集合。
2015 年,互联网工程任务组 (IETF) 与原始规范作者一起组建了 GeoJSON 工作组来标准化 GeoJSON。 RFC 7946于2016年8月发布,是GeoJSON格式的新标准规范,取代了2008年的GeoJSON规范。
GeoJSON 支持Point 、 LineString 、 Polygon 、 MultiPoint 、 MultiLineString 、 MultiPolygon和GeometryCollection几何类型。
要素包含几何对象和附加属性,而要素集合表示要素列表。
例如,一栋房子、一条路和一个公交车站代表了三个不同的Feature 。它们都可能具有不同类型的几何形状。房子可以是一个多边形,道路可以是一条线,公交车站可以是一个点。它们全部代表一个邻域,这在 GeoJSON 中称为“FeatureCollection” 。
EntityFramework (EF) 是 Microsoft .net 的开源对象关系映射 (ORM) 框架。它允许我们使用数据库行作为类实例。
Well-known Text (WKT) 是一种文本标记语言,用于表示地图上的矢量几何对象、空间对象的空间参考系统以及空间参考系统之间的转换。总之,它是几何对象的文本表示。
GeoJSON for EntityFramework是一个 .net 库,允许您从 EntityFramework 空间数据或 WKT 输入创建 GeoJSON 输出。换句话说,它将不同类型的几何对象序列化为 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
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 ) ;
}
}
视觉基础
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 ) ;
}
要安装适用于实体框架的 GeoJSON,请在包管理器控制台中运行以下命令
实体框架6
Install-Package GeoJSON4EntityFramework
实体框架5
Install-Package GeoJSON4EntityFramework5
下载最新版本并手动添加到您的项目参考中
您可以使用 http://geojson.io 和 http://geojsonlint.com 验证输出
从 OpenStreetMap® 中提取的测试数据。 OpenStreetMap® 是开放数据,由 OpenStreetMap 基金会 (OSMF) 根据开放数据共享开放数据库许可证 (ODbL) 授权