空间数据范围发生变化后如何更新数据的显示范围
来源:互联网 发布:java反射获得属性值 编辑:程序博客网 时间:2024/04/30 21:42
在数据编辑或者数据出现脏数据的情况下,空间数据的显示可能会出现全图显示无法完整的显示主要数据的问题,遇到这种情况需要更新数据范围才能正确显示全图数据范围,需要通过代码的方式更新数据范围,核心代码如下:
c# engine:
ISchemaLock schemaLock = (ISchemaLock)temp.FeatureClass;
try
{
IFeatureClassManage featureClassManage = (IFeatureClassManage)temp.FeatureClass;
featureClassManage.UpdateExtent();
schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
catch (Exception e)
{
schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
vba:
Public Sub UpdateFCExtent()
Dim pApp As IGxApplication
Dim pGxObj As IGxObject
Dim pGXDataset As IGxDataset
Set pApp = Application
Set pGxObj = pApp.SelectedObject
Set pGXDataset = pGxObj
Dim pFC As IFeatureClass
Set pFC = pGXDataset.Dataset
Dim pFeatureClassManage As IFeatureClassManage
Set pFeatureClassManage = pFC
pFeatureClassManage.UpdateExtent
End Sub
[Visual Basic 6.0]:
Public Sub reCalcExt()
Dim pGXApplication As IGxApplication
Set pGXApplication = Application
Dim pGxObject As IGxObject
Set pGxObject = pGXApplication.SelectedObject
If Not TypeOf pGxObject.InternalObjectName Is IFeatureClassName Then
Exit Sub
End If
Dim pName As IName
Set pName = pGxObject.InternalObjectName
Dim pSchemaLock As ISchemaLock
Set pSchemaLock = pName.Open
pSchemaLock.ChangeSchemaLock esriExclusiveSchemaLock
Dim pFeatureClassManage As IFeatureClassManage
Set pFeatureClassManage = pSchemaLock
pFeatureClassManage.UpdateExtent
Exit Sub
ErrHandler:
pSchemaLock.ChangeSchemaLock esriSharedSchemaLock
End Sub
Python:
# coding:cp936
import _winreg
import comtypes
from comtypes.client import GetModule
from comtypes.client import CreateObject
# 查找 ArcGIS 10 的安装路径,我的是64位系统所以有 Wow6432Node,32位系统的话就去掉那个节点
keyESRI = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE//Wow6432Node//ESRI//Desktop10.0")
ArcGISPath = _winreg.QueryValueEx(keyESRI, "InstallDir")[0] + "com//"
# 载入必要的库
GetModule(ArcGISPath + 'esriDataSourcesFile.olb')
GetModule(ArcGISPath + 'esriGeoDatabase.olb')
GetModule(ArcGISPath + 'esriSystem.olb')
GetModule((comtypes.GUID("{6FCCEDE0-179D-4D12-B586-58C88D26CA78}"), 1, 0)) # esriVersion
import comtypes.gen.esriDataSourcesFile as esriDataSourcesFile
import comtypes.gen.esriGeoDatabase as esriGeoDatabase
import comtypes.gen.esriSystem as esriSystem
import comtypes.gen.ArcGISVersionLib as esriVersion
# ArcGIS 10.0 以上需要先绑定版本,9.x 不用下面这两句
versionManager = CreateObject(esriVersion.VersionManager, interface = esriVersion.IArcGISVersion)
versionManager.LoadVersion(esriVersion.esriArcGISDesktop, "10.0")
# 初始化 Ao,和 C++ 里面一样的做法
aoInit = CreateObject(esriSystem.AoInitialize, interface = esriSystem.IAoInitialize)
pCode = esriSystem.esriLicenseProductCodeArcInfo
status = aoInit.IsProductCodeAvailable(pCode)
if status == esriSystem.esriLicenseAvailable:
aoInit.Initialize(pCode)
shpFileWSFactory = CreateObject(esriDataSourcesFile.ShapefileWorkspaceFactory, interface = esriGeoDatabase.IWorkspaceFactory)
shpFileWS = shpFileWSFactory.openFromFile(r'D:/Temp/p/testtooldata', 0).QueryInterface(esriGeoDatabase.IFeatureWorkspace)
featureClass = shpFileWS.openFeatureClass("test1")
featureManger = featureClass.QueryInterface(esriGeoDatabase.IFeatureClassManage)
featureManger.UpdateExtent()
del featureManger
del featureClass
- 空间数据范围发生变化后如何更新数据的显示范围
- 如何控制Excel统计图数据的实际显示范围
- 基本数据的范围
- 计算机语言的数据范围
- 各个数据的范围
- 数据范围
- 数据范围
- 【数据范围】
- SQL SERVER 2012 显示指定范围的数据
- 车主数据的应用范围
- 各整形的数据范围
- 关于基础的数据范围
- matlab如何处理当数据范围很大时颜色变化也要较明显
- 如何下载全球范围的谷歌卫星地图数据
- django 数据库查询—如何获取指定范围的数据
- 怎样设置范围使数据透视表能自适应数据源记录的变化
- c++ 数据范围
- c++ 数据范围
- Linux下简单模拟密钥体系加密报文 (转)
- php检测访问者是否为手机
- VS C++ compiler的一个bug
- 关于 App store 里的截图 在不同分辨率手机的sotre里与 pc的itunes store 里不一致的问题
- Extjs3.4和fusioncharts3.2的整合
- 空间数据范围发生变化后如何更新数据的显示范围
- ANDROID平台移应该做的两步工作
- Struts2+Spring 整合成功测试案例----利用Dojo实现简单的Ajax的效果(一) .
- 单子(Singleton)设计模式
- Android的多线程
- 数据库备份文件自动压缩脚本
- Spring Jdbc入门
- C# 中的委托和事件
- 802.11n无线局域网设计最佳实践