Archive for the Category: File Geodatabase API

File Geodatabase API – Beta 3 发布

下载地址: http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api 新特性: A new error handler that returns text when the error number is passed in. • A SpatialRefInfo function that returns the WKT representation of a projection or GCS by passing in the name or srid. • ZRange has been added to the Envelope to allow get extent to include zRange. • Shape […]

Also posted in ArcGIS, esri, gis Leave a comment

FileGDB Geometry 二进制格式分析

在File Geodatabase API 开发中,对Geometry的读取是其中最核心的内容,但不幸的是File Geodatabase API并没有提供直接对Geometry读写的类,只在Row类中提供了GetGeometry的方法来获取ShapeBuffer。 long GetGeometry(ShapeBuffer& shapeBuffer); ShapeBuffer包含两部分,一个是shapeBuffer,用来存储Geometry的二进制内同,另外一部分是inUseLength,存储该shapeBuffer的长度。 对于shapeBuffer,我们是陌生的,因为其只是一个二进制流,并不知道其内部结构,在File Geodatabase API 的sample中只给了读写点类型数据的例子,对于更复杂的线和面并没有给出相应的例子。因此我们要读写线和面要素,必须破解这两种二进制流,转换成我们想要的线和面对象。 下面首先来看一下读取点的代码: ShapeBuffer geometry; double x, y; memcpy(&x, geometry.shapeBuffer + 4, sizeof(x)); memcpy(&y, geometry.shapeBuffer + 12, sizeof(y)); 通过上面的代码我们可以发现,点类型数据的坐标存储在shapeBuffer中的4-11Byte(x)和12-17 Byte(y),0-3字节没有使用。 通过对shapeBuffer的分析,此处省略一万字…。可以得到下面的几何对象的存储结构示意图: 其中点比较简单,前四位存储几何类型,点的类型为1; 线的前四位同样存储几何类型,线的类型为3,后面32为存储该集合对象的外包络矩形,分别为double类型的xmin,ymin,xmax,ymax。再后面四位存储path的个数。接下来的四位存储总的坐标个数。再后面的4*nPath为存储的是每个path的起始坐标在总的坐标中的下标。最后8*2*nPoints位存储的坐标序列。 面和线的存储方式基本相同,将path换做ring即可。 通过上面的分析,我们就可以使用File GDB API将FileGeoDatabase中数据转换成自定义的格式了。

Also posted in ArcGIS, esri, gis, shape file 1 Comment

FileGDBViewer 发布

FileGDBViewer 是一个浏览FileGDB数据的小程序。主要特点如下: 绿色的,无需安装,解压即可运行。 使用FileGDB API开发,地图显示与操作使用刘富乾同学的AutoGIS。 目前只支持点、线、面三种数据的浏览。 只支持ArcGIS10 中制作的FileGDB。 不支持编辑。 界面如下,仿mapgis67: 下载:FileGDBViewer 在此,特别感谢刘富乾同学的AutoGIS。

Leave a comment

ArcGIS File GDB API beta版发布

ArcGIS File GDB API 千呼万唤下终于推出了,大家可以去Resource Center 下载 http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api 主要特性如下: The File Geodatabase API provides a non-ArcObjects based means by which advanced developers can work with File Geodatabases. A common user scenario is to open File Geodatabase tables in non-ESRI applications to view or modify data. This API provides access to the low-level File Geodatabase file […]

Also posted in ArcGIS, gis Leave a comment

File Geodatabase API 即将推出

File Geodatabase API是一个不依赖于ArcObjects来访问的File GDB的API,基于c++实现,该API可以说千呼万唤始初来,从08年用户大会就开始宣传,现在才确定明年1月份提供beta版。 File Geodatabase API的目的主要是使开发人员不必使用ArcObjects的授权即可以访问File Geodatabase,因此可以把File Geodatabase当作一种交换数据格式来使用,可以共享、交换数据,也许可以取代shapefile。 File Geodatabase API 是使用c++开发,并且只支持ArcGIS10 及其以后的File Geodatabase, 内部版本会提供c++类库(dll,lib,.h)以及API文档,并且仅支持windows。 下面介绍一下File Geodatabase API功能: 1 创建、打开删除file GDB 2 读取Geodatabase的schema(地理数据库中所有内容都可以只读方式打开) 3 创建简单要素模型的schema(包括表,点、线、面要素类,要素数据集,域以及子类型) 4 读取File Geodatabase中数据集的内容 5 插入、删除编辑简单数据集(点、线、面要素类以及Multipoint, Multipatch要素类 ) 6 执行属性查询和空间查询(只能执行外包络矩形查询) 7 浏览关系和使用附件 File Geodatabase API 和ArcObjects的关系如下图1-1: File Geodatabase API不能取代ArcObjects,因此很多ArcObjects提供的功能都没有,例如不能对复杂地理数据库类型进行插入、删除、更新操作: 1 注记和维要素类 2 关系类 3 几何网络和网络数据集 4 拓扑类 5 Terrains 6 […]

Also posted in ArcGIS 1 Comment