全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
将shp转化为geodatabase
如何将shape文件转化成GeoDataBase(各种文件格式的转换)
本例演示的是如何将shape文件转化成personal GeoDatabase文件,其它格式间的与此转换类似。主要用到IFeatureDataConverter接口的ConvertFeatureClass方法。
l 要点
首先,创建新的GeoDataBase数据库,并创建IFeatureDatasetName对象。创建定义两个IFeatureClassName接口对象分别引用输入表(shape文件)和输出表。
然后设置输出表的Shape字段的GeormetryDef属性。这一步非常关键,因为其中包含了数据库和shape文件的空间参考信息。
最后调用IFeatureDataConverter.ConvertFeatureClass方法完成功能。
l 程序说明
过程UIBConvert_Click是实现模块,调用过程ConvertShapeToGeodatabase实现功能。
sDataPath定义了数据与工程文件的相对路径。SHAPE_NAME描述了要转化的shape文件的文件名。MDB_NAME和F_DS_NAME分别描述了Access数据库名和库的数据集的名称。
Option Explicit
Private Sub UIBConvert_Click()
Call ConvertShapeToGeodatabase
End Sub
Private Sub ConvertShapeToGeodatabase()
Dim pOutWorkspaceFactory As IWorkspaceFactory
Dim pOutWorkspaceName As IWorkspaceName
Dim pInWorkspaceName As IWorkspaceName
Dim pOutFeatureDSName As IFeatureDatasetName
Dim pOutDSName As IDatasetName
Dim pInFeatureClassName As IFeatureClassName
Dim pInDatasetName As IDatasetName
Dim pOutFeatureClassName As IFeatureClassName
Dim pOutDatasetName As IDatasetName
Dim iCounter As Long
Dim pOutFields As IFields
Dim pInFields As IFields
Dim pFieldChecker As IFieldChecker
Dim pGeoField As IField
Dim pOutGeometryDef As IGeometryDef
Dim pOutGeometryDefEdit As IGeometryDefEdit
Dim pName As IName
Dim pInFeatureClass As IFeatureClass
Dim pShpToFeatClsConverter As IFeatureDataConverter
Dim pVBProject As VBProject
Dim sDataPath As String
Const SHAPE_NAME As String = "country"
Const MDB_NAME As String = "countryDB"
Const F_DS_NAME As String = "World"
On Error GoTo ErrorHandler
Set pVBProject = ThisDocument.VBProject
sDataPath = pVBProject.FileName & "\..\..\..\..\data\"
If Not "" = Dir(sDataPath & MDB_NAME & ".mdb") Then
MsgBox MDB_NAME & ".mdb already exist"
Exit Sub
Else
' Create a new Access database
Set pOutWorkspaceFactory = New AccessWorkspaceFactory
Set pOutWorkspaceName = pOutWorkspaceFactory.Create(sDataPath, MDB_NAME, Nothing, 0)
' create a new feature datset name object for the output Access feature dataset, call
' it "World"
Set pOutFeatureDSName = New FeatureDatasetName
Set pOutDSName = pOutFeatureDSName
Set pOutDSName.WorkspaceName = pOutWorkspaceName
pOutDSName.Name = F_DS_NAME
' Get the name object for the input shapefile workspace
Set pInWorkspaceName = New WorkspaceName
pInWorkspaceName.PathName = sDataPath
pInWorkspaceName.WorkspaceFactoryProgID = _
"esriCore.ShapefileWorkspaceFactory.1"
Set pInFeatureClassName = New FeatureClassName
Set pInDatasetName = pInFeatureClassName
pInDatasetName.Name = SHAPE_NAME
Set pInDatasetName.WorkspaceName = pInWorkspaceName
' Create the new output FeatureClass name object that will be passed
' into the conversion function
Set pOutFeatureClassName = New FeatureClassName
Set pOutDatasetName = pOutFeatureClassName
' Set the new FeatureClass name to be the same as the input FeatureClass name
pOutDatasetName.Name = pInDatasetName.Name
' Open the input Shapefile FeatureClass object, so that we can get its fields
Set pName = pInFeatureClassName
Set pInFeatureClass = pName.Open
' Get the fields for the input feature class and run them through
' field checker to make sure there are no illegal or duplicate field names
Set pInFields = pInFeatureClass.Fields
Set pFieldChecker = New FieldChecker
pFieldChecker.Validate pInFields, Nothing, pOutFields
' Loop through the output fields to find the geometry field
For iCounter = 0 To pOutFields.FieldCount
If pOutFields.Field(iCounter).Type = esriFieldTypeGeometry Then
Set pGeoField = pOutFields.Field(iCounter)
Exit For
End If
Next iCounter
' Get the geometry field's geometry definition
Set pOutGeometryDef = pGeoField.GeometryDef
' Give the geometry definition a spatial index grid count and grid size
Set pOutGeometryDefEdit = pOutGeometryDef
pOutGeometryDefEdit.GridCount = 1
pOutGeometryDefEdit.GridSize(0) = 1500000
' Now use IFeatureDataConverter::Convert to create the output FeatureDataset and
' FeatureClass.
Set pShpToFeatClsConverter = New FeatureDataConverter
pShpToFeatClsConverter.ConvertFeatureClass pInFeatureClassName, Nothing, _
pOutFeatureDSName, pOutFeatureClassName, Nothing, pOutFields, "", 1000, 0
MsgBox "Convert operation complete!", vbInformation
End If
Exit Sub
ErrorHandler:
MsgBox Err.Description
End Sub