环境ArcGIS10.1 Oracle11g
1、代码成功创建要素数据集,但是在oracle数据库中刷新不出来。解决方法:经检查发现该段代码放在IWorkSpaceEdit.startEditing后面,由于创建后并没有调用stopediting(true),所以一直识别失败。把这段代码提到startEditing之前执行。
2、更新数据报ORA-20085 Insert Spatial Reference SRID 300026 does not match SDE.REDLINERANG_A.SHAPE registered Spatial Reference SRID 300005
ORA-06512:at “SDE.ST_DOMAIN_METHODS”, line 1986
解决方法:经过查询表sde.ST_SPATIAL_REFERENCES,SRID 300005表示未知参考系统,SRID 300026是自定义的bz地方坐标系,猜测是在数据处理生成xx_point数据集时指定的未知坐标系,将其直接复制到sde库后,sde将其坐标系注册为SRID 300005;随后在sde库里将该要素数据集坐标系设置为SRID 300026,但是sde库并未将要素数据集下的要素类坐标系SRID 300005改为SRID 300026。目前的解决方法是:在SDE库里要素数据集下采用import方式导入前述处理生成的数据。另外一种方式:在生成处理完的数据集上设置相应的坐标系,然后复制粘贴到SDE库。
3、采用delete删除要素数据集时并不能删除里面的要素类,要素类还需要遍历删除。
4、mxd文档要设置坐标系。
5、调用copy GP工具将数据复制到ARCSDE数据库里,报错 ora-29855 ora-01536 超出表空间XX的空间限额。经发现当前用户对该表空间设置了使用限额,将其改为无限使用即可。 alter user skate quota unlimited on skate_ts;
http://blog.youkuaiyun.com/lrh_079/article/details/17001453
6、访问axpagelayoutcontrol.printer得到null。解决方法:电脑上没有设置默认打印机,设置默认打印机即可。可以设置Microsoft XPS Document Writer为默认打印机。
7、Axcontrols与maptcontrol的区别:10.2版,都存在于 ESRI.Arcgis.Controls,maptcontrol是接口,Axcontrols是控件。
参考https://blog.youkuaiyun.com/crury/article/details/5624525
从ESRI给出的官方解释是:
Axcontrols对应封装的.net组件,controls对应于com组件,在使用时须要添加ESRI.Arcgis.Axcontrols名空间和ESRI.Arcgis.Controls名空间。两者包含了所有AE组件。
一个高手的解释:
AxMapControl是.NET组件的,它是COM组件经过.NET的CCW(COM 可调用包装)包装后的控件,它是在全局程序集中加载的(缺省目录在C:/WINDOWS/Assembly)。而ESRI MapControl是ArcGIS安装目录的Bin文件中加载的。主要区别是一个要注册到注册表(COM的即后者),另一个不需要注册到注册表(直接在GAC中加载,这也是.NET新技术的特点所在).
---------------------
作者:crury
来源:优快云
原文:https://blog.youkuaiyun.com/crury/article/details/5624525
版权声明:本文为博主原创文章,转载请附上博文链接!
8、传递AxMapControl
http://blog.sina.com.cn/s/blog_488e2b5b0100ztxr.html
问题描述:
将AxMapControl传递到另一个类中使用。
解决方案1:(原始方案)
public void func(IMapControl2 mapControl)
{
...
}
在主函数中调用: func((IMapControl2)this.AxMapControl1.Object);
以上方案实际已经正常解决,但问题是每次调用,都要强制转换,对于使用者来说,肯定是个负担。
解决方案3:(完美解决)
1. 在类中添加添加引用AxControl(注意不是AxMapControl)
类中的函数为:
public void func(AxControl axMapControl)
{
IMapControl2 mapControl = (IMapControl2)axMapControl.Object;
...
}
主函数中调用:
func(this.AxMapControl1)
9、在arcmap里打开shp的属性表,可以看到有属性记录,但是我选择一条记录却没法定位过去,图上看不到该点。原因:
在AE里删除要素时没有使用工作空间开启编辑。 IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation();
10、空间查询(SpatialFilter)面包含线的关系找不到结果。原因:面没有封闭。 将面和线叠加到arcmap里,打开编辑,发现面没有封闭。
ISpatialFilter spatialFilter = new SpatialFilterClass()
{
Geometry = geometry,
GeometryField = originFClass.ShapeFieldName,
SpatialRel = esriSpatialRelEnum.esriSpatialRelContains
};