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操作实现。当跨越半球的几何形状(并将使用较小的几何形状)影响时,这些操作受到限制。

使用说明

转载自:https://blog.csdn.net/qq_36178899/article/details/81479432

You may also like...

退出移动版