
安装 gma:
pip install gma
功能逻辑架构
gma矢量数据操作类主要包括数据资源(DataSource)、矢量图层(Layer)、矢量要素(Feature),三者的示意图如下:

图 29 矢量数据组成图
矢量要素(Feature)是gma矢量数据的最小组成单元,其由一个几何体及其对应的字段构成。
矢量图层(Layer)是gma矢量数据的基础,其由一个或多个矢量要素构成。
数据资源(DataSource)由多个矢量图层组成,一般的矢量文件仅含有一个矢量图层。
gma内矢量数据功能/属性的关系结构如下图所示:

图 210 矢量数据处理功能结构图
矢量数据类型
几何形状类型
gma几何形状类型继承自OGR,但又有所不同,详细关系见下表:
| gma类型 | 解释 | OGR | 使用说明 |
|---|---|---|---|
| Point | 点 | ogr.wkbPoint | 数据中仅有一个点 |
| Line | 线 | ogr.wkbLineString | 数据中仅有一条线 |
| Polygon | 多边形 | ogr.wkbPolygon | 数据中仅有一个多边形 |
| MultiPoint | 多点 | wkbMultiPoint | 数据中有多个点 |
| MultiLine | 多线 | wkbMultiLineString | 数据中有多条线 |
| MultiPolygon | 多多边形 | wkbMultiPolygon | 数据中有多个多边形 |
属性表数据类型
gma属性表数据类型继承自pandas,矢量创建/修改时内部与OGR进行数据交换,详细关系见下表:
| pandas | 解释 | OGR |
|---|---|---|
| Int32/Int16/Int8/bool UInt32/UInt16/UInt8 | 整型(≤32位) | ogr.OFTInteger |
| Int64/UInt64 | 长整型(64位) | ogr.OFTInteger64 |
| datetime64[ns]/datetime64[ns, tz]/timedelta[ns] | 日期 | ogr.OFTDateTime |
| float64/float32 | 实数 | ogr.OFTReal |
| object | 字符串 | ogr.OFTString |
矢量格式支持
矢量格式信息统计
gma继承了OGR全部的矢量数据读取支持,并按照矢量数据特征进行了归类。gft模块的VectorSummary类,完整统计了gma内所有栅格格式。

矢量格式分类统计方法
| 类属性 | 说明 | 返回值示例 | 返回值类型 | 格式数量 |
|---|---|---|---|---|
| CopyableFormats | 可复制的格式 | {‘GPKG’, ‘NGW’, ‘PDF’, ‘netCDF’} | set | 4 |
| CreatableFormats | 可创建的格式 | {‘AmigoCloud’, ‘CARTO’, …} | set | 47 |
| MultiLayersFormats | 多图层支持的格式 | {‘AVCBIN’, ‘CAD’, ‘DGN’, …} | set | 25 |
| ReadableFormats | 可读取的格式 | {‘AVCBIN’, ‘AVCE00’, …} | set | 60 |
| TransformableFormats | 可转换的格式 | {‘AmigoCloud’, ‘CARTO’, …} | set | 47 |
| UpdatableFormats | 可更新的格式 | {‘CSV’, ‘DGN’, ‘DXF’, …} | set | 16 |
示例 (查看可复制的栅格格式):

创建一个矢量格式
(一)函数简介

矢量格式控制类方法/属性统计
| 类功能 | 说明 | 类型 | 返回值 |
|---|---|---|---|
| Copyable | 可复制性 | 属性 | str |
| Creatable | 可创建性 | 属性 | str |
| CreationFieldDataTypes | 支持创建字段的数据类型 | 属性 | list |
| CreationOptionInfo | 创建信息 | 属性 | DataFrame |
| CreationOptions | 创建选项 | 属性 | dict |
| Details | 格式详情 | 属性 | dict |
| Extension | 扩展名 | 属性 | str |
| Format | 格式短名称 | 属性 | str |
| GeoReferencing | 地理参考可具备性 | 属性 | str |
| LongName | 格式长名称 | 属性 | str |
| MultiLayer | 多图层支持性 | 属性 | str |
| SetCreationOptions | 设置创建选项(参数如CreationOptions,每种格式不相同) | 方法 | / |
| Transformable | 可转换性 | 属性 | str |
| Updatable | 可更新性 | 属性 | str |
| VLCOptions | ogr创建选项 | 属性 | list |
(二)示例 (查看并修属性表编码方式)

可生成的矢量格式
| 格式名 | 生成模式 | 多矢量图层 支持 | 属性表数据类型支持(OGR) | 扩展名 | 更新支持 | 空间参考 支持 |
|---|---|---|---|---|---|---|
| AmigoCloud | 创建 | 否 | String/Integer/Integer64/Real | 否 | 是 | |
| CARTO | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Time | 否 | 是 | |
| CSV | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Time/IntegerList/Integer64List/RealList/StringList | .csv | 是 | 是 |
| DGN | 创建 | 是 | .dgn | 是 | 是 | |
| DXF | 创建 | 是 | .dxf | 是 | 否 | |
| Elasticsearch | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Time/IntegerList/Integer64List/RealList/StringList/Binary | 否 | 是 | |
| FlatGeobuf | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Binary | .fgb | 否 | 是 |
| Geoconcept | 创建 | 否 | .gxt/.txt | 否 | 是 | |
| GeoJSON | 创建 | 否 | Integer/Integer64/Real/String/IntegerList/Integer64List/RealList/StringList/Date/DateTime | .json/.geojson | 是 | 是 |
| GeoJSONSeq | 创建 | 否 | Integer/Integer64/Real/String/IntegerList/Integer64List/RealList/StringList | .geojsonl/.geojsons | 是 | 是 |
| GeoRSS | 创建 | 否 | 否 | 是 | ||
| GML | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/IntegerList/Integer64List/RealList/StringList | .gml/.xml | 否 | 是 |
| GMT | 创建 | 否 | .gmt | 是 | 是 | |
| GPKG | 创建/复制 | 是 | Integer/Integer64/Real/String/Date/DateTime/Binary | .gpkg | 是 | 是 |
| GPSBabel | 创建 | 否 | 否 | 是 | ||
| GPX | 创建 | 是 | .gpx | 否 | 是 | |
| JML | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime | .jml | 否 | 是 |
| KML | 创建 | 是 | Integer/Real/String | .kml | 是 | 是 |
| LIBKML | 创建 | 是 | Integer/Real/String | .kml/.kmz | 是 | 是 |
| MapML | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Time | 否 | 是 | |
| Memory | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time/IntegerList/Integer64List/RealList/StringList/Binary | 否 | 是 | |
| MSSQLSpatial | 创建 | 是 | Integer/Integer64/Real/String/Date/Time/DateTime/Binary | 否 | 是 | |
| MVT | 创建 | 否 | Integer/Integer64/Real/String | .mvt/.mvt.gz/.pbf | 否 | 是 |
| netCDF | 创建/复制 | 否 | Integer/Integer64/Real/String/Date/DateTime | .nc | 是 | 是 |
| NGW | 创建/复制 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time | 否 | 是 | |
| ODS | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time/Binary | .ods | 是 | 否 |
| 创建/复制 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time | 否 | 是 | ||
| PostgreSQL | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time/IntegerList/Integer64List/RealList/StringList/Binary | 否 | 是 | |
| PGDump | 创建 | 否 | Integer/Integer64/Real/String/Date/DateTime/Time/IntegerList/Integer64List/RealList/StringList/Binary | .sql | 否 | 是 |
| S57 | 创建 | 是 | 否 | 是 | ||
| Selafin | 创建 | 否 | 是 | 是 | ||
| ESRI Shapefile | 创建 | 否 | Integer/Integer64/Real/String/Date | .shp/.dbf/.shz/.shp.zip | 是 | 是 |
| SQLite | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time/Binary/IntegerList/Integer64List/RealList/StringList | .sqlite/.db | 是 | 是 |
| TIGER | 创建 | 否 | 否 | 是 | ||
| VDV | 创建 | 否 | Integer/Integer64/String | .txt/.x10 | 是 | 是 |
| WAsP | 创建 | 否 | .map | 否 | 是 | |
| XLSX | 创建 | 是 | Integer/Integer64/Real/String/Date/DateTime/Time | .xlsx/.xlsm | 是 | 否 |
| DGNv8 | 创建 | 否 | 否 | 是 | ||
| FileGDB | 创建 | 否 | 否 | 是 | ||
| HANA | 创建 | 否 | 否 | 是 | ||
| IDB | 创建 | 否 | 否 | 是 | ||
| INTERLIS 1 | 创建 | 否 | 否 | 是 |



















