Mongodb插件
目录
Mongodb插件
MongoDB是一个流行的文档数据库。此插件提供对适当索引的集合的读写访问。
Maven:
<dependency> <groupId>org.geotools</groupId> <artifactId>gt-mongodb</artifactId> <version>${geotools.version}</version> </dependency>
要发布集合:
- 兼容集合必须具有一个或多个类型为2dsphere的空间索引。任何没有2dsphere类型的索引字段的集合都将被忽略。
- 在检查兼容集合时,将使用集合名称作为模式名称来查询模式存储以查找现有模式。如果存在模式,则将使用该模式,否则从集合中推断出模式并将其缓存到模式存储以供重用。
- 位置数据作为GeoJSON对象存储在集合中。GeoJSON的坐标参考系统使用WGS84基准和轴顺序经度/纬度。因此,模式中的几何属性描述符必须将EPSG:4326指定为CRS(对于推断的模式始终为true)。
- 可以使用createSchema方法创建新集合。这不应该用于手动定义现有集合的架构。
功能
MongoDataStore支持将MongoDB用作具有以下连接参数的数据存储:
-
data_store:指定要连接的MongoDB实例和数据库。
此字段需要MongoDB手册指定的MongoDB客户端URI。典型的URI将具有以下形式:
mongodb://example.com:27017/database
。URI必须包含数据库,但如果数据库尚不存在,则将创建该数据库。只有在需要创建数据库或者需要其他写操作(如WFS事务)时才需要写访问权限。如果需要,可以使用以下形式的MongoDB客户端URI提供凭据:
mongodb://username:password@example.com:27017/database
。 -
schema_store:为推断和手动定义的模式指定存储。
该字段可以接受mongodb或文件URI。如果目录不存在,将创建该目录,在这种情况下,将需要写入权限。
数据库和集合名称是可选的。如果缺少,数据库名称将默认为geotools,集合名称将默认为模式。数据库和集合必须使用URI提供的凭据进行写入。模式存储为MongoDB文档或遵循JSON模式格式的文件,模式为“类型名称”(typeName)作为键。
JSON架构
记住:
- 有效的GeoJSON几何编码是Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon。只有MongDB 2.5及更高版本支持GeoJSON多几何变体。
- 以下Java等效的BSON类型是有效的:String,Double,Long,Integer,Boolean,Date。
对于以下GeoJSON功能:
{ “type” : “Feature” ,
“geometry” : {
“type” : “Point” ,
“coordinates” : [ 45.52 , - 122.681944 ]
},
“properties” : {
“city” : “Portland” ,
“year” : “2014”
“出席” : “840”
}
}
使用以下模式描述:
{
“typeName” : “places” ,
“userData” : {
“collection” : “places”
},
“geometryDescriptor” : {
“localName” : “location” ,
“crs” : {
“properties” : {
“name” : “urn:ogc:def:crs:EPSG:4326”
},
“type” : “name”
}
},
“attributeDescriptors” : [
{
“localName” : “location“ ,
”type“ : {
”binding“ : “org.locationtech.jts.geom.Point”
},
“userData” : {
“encoding” : “GeoJSON” ,
“mapping” : “geometry”
}
},
{ “localName” : “city” ,
“type” : { “binding” : “java.lang.String” },
“userData” : { “mapping” : “properties.name” }
},
{ “localName” : “year” ,
“type”: { “binding” : “java.lang.String” },
“userData” : { “mapping” : “properties.year” }
},
{ “localName” : “attendance” ,
“type” : { “binding” : “java.lang.String” },
“userData” : { “映射“ : ”properties.attendance“ }
}
]
}
文件URI架构存储:
-
对于基于目录的模式存储,请使用需要修改的typeName编辑JSON文档。
使用createSchema()编写模式而不进行缩进,但如果需要,可以缩进生成的文件以提高可读性。
MongoDB URI模式存储:
-
使用MongoDB文档操作工具,在集合中更新或插入模式文档,以使文档保持遵循JSON模式格式的形式。
文件架构存储中包含的JSON文件采用可插入MongoDB架构存储的格式(只要文件中的typeName对文档集合是唯一的)。
通过创建新的唯一typeName并在根级userData对象下指定集合,可以为单个MongoDB文档集创建多个模式或视图。
实施说明
- 边界框计算使用全表扫描。
- Multigeometry支持需要MongoDB 2.5及更高版本
- 自相交多边形是阻止MongoDBDataStore运行的常见数据问题。请注意,由于转换为WGS84坐标(这是将数据导入MongoDB的必要步骤),可能会出现自相交,即使它们在原始数据集中不存在。
- 所有2dsphere索引和空间操作都假设WGS84数据。存储在MongoDB文档集合中的所有索引GeoJSON数据都假定使用WGS84坐标参考系统引用。
- 通过2.4.9测试的MongoDB版本不支持嵌套在$或操作中的空间索引上的多个操作(因此在日期行中将查询拆分为两个将不起作用)。
- 在其中,Intersects和BBOX过滤器使用$ geoWithin和$ geoIntersects操作实现。当跨越半球的几何形状(并将使用较小的几何形状)影响时,这些操作受到限制。
使用说明
- 包含字母和数字以外字符的属性名称如果在CQL过滤器中使用可能会导致问题,因此应该用双引号括起来(请参阅:http: //docs.geoserver.org/latest/en/user/filter/ecql_reference.html#属性)。这与嵌套属性尤其相关,嵌套属性以默认模式推理算法的完整路径(点符号)命名。
转载自:https://blog.csdn.net/qq_36178899/article/details/81479432