基于arcgis和NET架构地图匹配软件二次开发笔记.docx

上传人:b****8 文档编号:11312313 上传时间:2023-02-26 格式:DOCX 页数:12 大小:26.65KB
下载 相关 举报
基于arcgis和NET架构地图匹配软件二次开发笔记.docx_第1页
第1页 / 共12页
基于arcgis和NET架构地图匹配软件二次开发笔记.docx_第2页
第2页 / 共12页
基于arcgis和NET架构地图匹配软件二次开发笔记.docx_第3页
第3页 / 共12页
基于arcgis和NET架构地图匹配软件二次开发笔记.docx_第4页
第4页 / 共12页
基于arcgis和NET架构地图匹配软件二次开发笔记.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于arcgis和NET架构地图匹配软件二次开发笔记.docx

《基于arcgis和NET架构地图匹配软件二次开发笔记.docx》由会员分享,可在线阅读,更多相关《基于arcgis和NET架构地图匹配软件二次开发笔记.docx(12页珍藏版)》请在冰豆网上搜索。

基于arcgis和NET架构地图匹配软件二次开发笔记.docx

基于arcgis和NET架构地图匹配软件二次开发笔记

 

基于arcgis和.NET架构

地图匹配软件二次开发笔记

--仅供个人学习使用,不可用于商业用途

2020-04-12

1搭建框架

1.1建立项目。

1.2添加工具箱D:

\rjaz\arcgis\DeveloperKit10.0\DotNet\ToolBox,引用自动跟随控件自动添加,故无需额外添加引用。

1.3拖动控件到窗体。

1.4加入代码到main:

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

1.5ArcEngine开发常见报错原因分析及解决方法:

2GPS数据导入Oracle

2.1imp导入,已经导入A1,表空间达到32G,不可再次导入,

后面已经解决,参见10

3未能加载文件或程序“ESRI.ArcGIS.Carto,Version=10.0.

0.0,Culture=neutral,PublicKeyToken=8fc3cc631

1、解决方案资源管理器窗口中,右键项目==》属性

2、在弹出的属性页面中,选择“生成”选项卡

3、修改“生成”选项卡里面的“目标平台”为:

"X86"

4、重新编译程序OK

4vs2015不支持ArcGISEngine以及丢失控件和模板解决办法

问题二:

vs中没有arcgis模板—vs新建项目时,项目类型中没有ArcGis一项

图片用的网上找的,不是自己截图,看个意思就好。

这里ArcGis模板下面有三项,DeskTopAdd-Ins,ExtendingArcObjects和SeverObjectExtensions。

这取决于你装了什么。

模板不出现的解决办法:

第一步:

将模板文件拷贝到vs模板库中,我的VS和ArcGis都安装在D盘,安装时ArcGis模板文件放在C:

\ProgramFiles(x86)\MicrosoftVisualStudio9.0\Common7\IDE\ItemTemplates\CSharp和C:

\ProgramFiles(x86)\MicrosoftVisualStudio9.0\Common7\IDE\ItemTemplates\CSharp中,将模板(两个文件夹下的ArcGIS文件夹)拷贝至vs2015模板文件位置:

D:

\rjaz\vs2013\Common7\IDE\ItemTemplates\CSharp和D:

\rjaz\vs2013\Common7\IDE\ProjectTemplates\CSharp中。

第二步:

用右键,管理员权限运行devenv.exe,就是启动vs2015

第三步:

重新安装一次模板(引用的)我的是vs2015

按照以下顺序,打开VS2015的命令行工具:

开始-->所有应用-->MicrosoftVisualStudio2015-->vs2015开发人员命令提示(可能会叫VisualStudio2015CommandPrompt)(VS2015开发人员命令提示)

然后执行如下命令:

devenv.exe/InstallVSTemplates

需要注意的事情是,这个命令执行后,不会马上出现项目或项模板,需要重新打开vs2015,新建时会重新初始化模板。

如果第三步有问题,换成用管理员权限运行。

第四步:

对于已有项目,需要重新生成解决方案。

(新建项目请忽略此步骤)

Java

5eclipse配置JDK

6Thecontainer'MavenDependencies'referencesnonexistinglibrary

7maven使用过程中遇到的问题(依赖jar文件下载失败等)

8解决PLSQL报错"动态执行表不可访问,本会话的自动统计被禁止"本文章已收录于:

使用PLSQL,第一次执行表的select操作的时候,提示"动态执行表不可访问,本会话的自动统计被禁止"

  这种问题,一看就是当前连接用户没有对sys用户下的表v$session,v$sesstat,v$statname的select权限

解决此问题的方式就是授权:

以sysdba身份登录

grantselectonv_$statnametousername;

grantselectonv_$sesstattousername;

grantselectonv_$sessiontousername;

grantselectonv_$mystattousername;

9---查询表空间使用率

SELECTtotal.tablespace_name,

Round(total.MB,2)ASTotal_MB,

Round(total.MB-free.MB,2)ASUsed_MB,

Round((1-free.MB/total.MB)*100,2)

||'%'ASUsed_Pct

FROM(SELECTtablespace_name,

Sum(bytes)/1024/1024ASMB

FROMdba_free_space

GROUPBYtablespace_name)free,

(SELECTtablespace_name,

Sum(bytes)/1024/1024ASMB

FROMdba_data_files

GROUPBYtablespace_name)total

WHEREfree.tablespace_name=total.tablespace_name;

10调整和增加表空间

sys用户下执行:

selecttablespace_name,sum(bytes)/1024/1024fromdba_free_spacegroupbytablespace_name

select*fromdba_data_filestwheret.tablespace_name='SDE'

alterdatabasedatafile'C:

\APP\ZHAO\PRODUCT\11.2.0\DBHOME_1\SDE.DBF'resize30720M(注意空格)

altertablespaceSDEadddatafile'D:

\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\SDE01.DBF'size30720M

读取空间数据步骤

获取文件信息-获取文件目录名称-获取文件名

创建工作空间工厂-----创建工作空间-----创建要素工作空间-----要素类-----要素游标----要素-开始loop

SDE数据一定要使用工作空间工厂去初始化工作空间,在工作空间打开FeatureClass,这是最常规的操作

stringstrFielPath="C:

\\aa.shp";

FileInfofileInfo=newFileInfo(strFielPath);

stringfileDirectoryName=fileInfo.Directory

Name;

stringfileName=fileInfo.Name;

IWorkspaceFactoryworkspaceFactory=newShapefileWorkspaceFactoryClass();

IWorkspaceworkspace=workspaceFactory.OpenFromFile(fileDirectoryName,0);

IFeatureWorkspacefeatureWorkspace=workspaceasIFeatureWorkspace;

IFeatureClassfeatureClass=featureWorkspace.OpenFeatureClass(fileName);

IFeatureCursorfeatureCursor=featureClass.Search(null,false);

IFeaturefeature=featureCursor.NextFeature();

while(feature!

=null)

{

IGeometrygeoMetry=feature.Shape;//得到的每个数据

feature=featureCursor.NextFeature();

}

11GPS数据怎么从SDE中获取,怎么加载到图层上

方案1

第一步,获取GPS的X,Y坐标

第二步,创建GPS图层

方案2

第一步,把GPS数据转化成shp文件(暂时用arcgis实现)

读取GPS坐标

第二步,加载GPS的shp文件

12如何的自由的存取GPS点,或者自由的存取shp文件的属性值

13怎么计算点到直线的最短距离,

怎么找到垂足,

怎么取得垂足,

怎么把垂足加载到地图上并且显示,

怎么把垂足的信息存储到SDE中

14数据集和要素类都有空间参考系

15求点到线的最短距离

IProximityOperator

IProximityOperator接口的主要方法有:

ReturnDistance方法用于返回两个几何对象间的最短距离,

QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,ReturnNearestPoint方法用于创建并返回几何对象上离给定输入点的最近距离的点。

16匹配过程(GPS点修正过程):

实现GPS点到投影到最近距离的线上,取得该垂足,更新GPS的X,Y坐标

解决这5个步骤,那么GPS地图匹配任务最核心的任务完成!

18修正GPS步骤

1取得一个点

2创建buffer

3找到buffer区的线元素集合

4分别求点到线的所有垂直距离

5取得垂直距离最小的点的X,Y坐标

6替换原来点的GPS坐标

取得最小距离对应的点

1先读取所有的图层

2查询所有图层的buffer区域的要素,放入一个临时图层中

3读取临时图层中的所有要素

19修正GPS点过程中关闭arcmap和数据库,防止要素图层被占用和锁定导致无法修改数据库中的属性。

20修正步骤

1按照车牌号分类GPS点,放入新表中

2按照时间排序,从早到晚升序排列

3从表中取得点,进行修正

4存入新的表中

5生成shp文件

21为什么修改数据库中的gps,X,Y坐标后,shp文件中点的位置不改变?

22SDE中多出的几何图形属性怎么得来的,怎么进行修改?

23道路匹配之交叉路口 

   在道路匹配中,交叉路口的匹配是最复杂的。

常见的问题有三种,一是在错误的道路行驶一小段距离后,才跳到正确的路上;二是位置更新太慢,然后突然跳动;三是角度反映太慢。

     匹配错误的原因有三种,一、优先匹配原来道路时,向前行驶了一段距离。

二、以交叉路口为中心划定一个范围,在此范围内不做更新。

三、现实中交叉路口和数据中的道路模型有差异(比如,交叉路口会有一些虚拟的道路)。

四、GPS的误差。

     位置更新慢的原因有两个:

一是在交叉路口的行走轨迹和数据中的道路模型不完全相同,在数据中,两条路是必交叉于一点,而实际上在交叉点之前就已经开始拐弯,拐弯不一定经过交叉点。

在没有完全到达新路之前,均有可能在交叉点前的路段上。

二是为了回避匹配错误,而采取的延迟策略。

     角度是利用前后点经纬度计算出来的,角度更新慢的原因,一是位置更新慢。

导致变化慢,二是角度采取了折中策略,导致变化小。

     在我们的开发过程中,尝试过多种数学方法来回避这些问题,如调整匹配的误差范围;增加对道路数据中通行属性的利用;对应交叉路口进行范围限制等等,最终效果都不甚理想。

曾经有部分厂商,在汽车的轴承上安装转弯、倾斜传感器,并配合道路网数据和倾斜数据,以提高匹配的准度。

     用于手机、PND的导航系统中,有什么低成本的方式,大大提高拐弯时的准度吗?

     答案是,利用好GPS穿过来的角度和速度。

在速度不是过低时,从GPS传过来的值是比较稳定的,可信度是很高的。

     如果能够确定前方路口,并且在进入前方路口之前,将可能通行的道路都找出来,在距离前方交叉路口一定距离的地方,放弃以垂直牵引距离优先算法的匹配,改为利用GPS角度和速度变化趋势来进行道路匹配。

     有一组实验数据,如果以25公里/时的速度,拐一个90度的弯,会接到四次明显的角度变化。

如果速度提高到45公里/时,接到的角度更新次数是3次。

     那么,如果我们在第一次角度发生明显改变时,利用角度所在的象限,排除一些不符合条件的候选道路,同时返回GPS角度,将经纬度更新到交叉点上。

然后利用下一次,或下下次的GPS角度,进一步明确目标道路。

如果交叉路口很复杂的时候,可以等到角度不再发生明显变化时,再确定最终的道路。

     如上图中,汽车从D—>O—>B行驶,带方向的红色点是GPS模块得到轨迹点,在距离O点还有15m的时候,就采用交叉点特殊匹配算法。

将前方可通行的道路作为候选道路,角度没有发生明显变化的时候,就优先匹配到原路段上,当第一次角度发生明显变化时,将点匹配到O点上,同时使用GPS得到的角度,根据此角度可将OC、OO'路段排除了。

当第二次角度发生明显变化时,就可以确定OB为下一个将要行走的路段。

    考虑到拐弯处,速度会一般会有明显变化,因此可以作为拐弯判断一个权值较低的判定因素。

24删除表中重复记录

1、删除表中多余重复记录,根据单字段(peopleId)来判断,只留有rowid最小的记录

deletefrompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

androwidnotin(selectmin(rowid)frompeoplegroupbypeopleIdhavingcount(peopleId)>1)

2、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

deletefromTBIZ_GMS_GPS_HIS_C1a

where(a.FPASSNO,a.FSTATUSDATE,a.FDATE)in(selectFPASSNO,FSTATUSDATE,FDATEfromTBIZ_GMS_GPS_HIS_C1groupbyFPASSNO,FSTATUSDATE,FDATEhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromTBIZ_GMS_GPS_HIS_C1groupbyFPASSNO,FSTATUSDATE,FDATEhavingcount(*)>1)

25HRESULT:

0x80040215

在使用ITopologicalOperator求交集等操作的时候,有时会出现“

HRESULT:

0x80040215”这个异常,原来是空间参考不一样所致。

将 SpatialReference

属性设为同一空间参考就不会出现HRESULT:

0x80040215异常啦。

26怎么取得两个连续的点

平行道路上,怎么匹配到一条道路上

以一天为单位进行匹配和画出轨迹,合理

27怎么判断拐弯,拐弯表示可能会有交叉口

GPS点的角度持续变化

Buffer区域是否有交叉点,没有就是简单的交叉口,有就作复杂交叉口处理,

28空间查询终极版,可以实现sortby

29怎么让轨迹显示成和路段一样的曲线,怎么提取点所在的路段,并加入到新的图层中

选取指定位置,指定长度的路线,生成轨迹图层,显示所有的信息

30判断几何空间关系

IRelationalOperator接口

31读取数据内存溢出,过慢的问题,怎么解决

使用游标

32关于sde ora-01000:

超出打开游标的最大数问题

33ArcEngine错误提示

34arcgisengine常用方法

35怎么获取第一条直线相交的线,相交的线尽可能的少,且最有可能是候选的线

怎么获取第二条直线相交的线,尽可能的少

36ArrayList删除集合中某一属性相同的元素

37怎么提高ArcSDEforOracle写入地理数据库的效率

38深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1