ArcEngine关于INASover在中ClosestFacility分析中内存溢出的问题

问题描述

publicvoidSolveRoute(){IWorkspaceFactoryworkspaceFactory=System.Activator.CreateInstance(System.Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory"))asIWorkspaceFactory;IFeatureWorkspacefeatureWorkspace=workspaceFactory.OpenFromFile(FGDB_WORKSPACE,0)asIFeatureWorkspace;IFeatureClassinputStopsFClass=featureWorkspace.OpenFeatureClass(INPUT_STOPS_FC);IFeatureClassinputStopsToFClass=featureWorkspace.OpenFeatureClass(INPUT_STOPS_TO_FC);IFeatureClassinputStreetClass=featureWorkspace.OpenFeatureClass(INPUT_STREET_SHP);//ObtainthedatasetcontainerfromtheworkspaceESRI.ArcGIS.Geodatabase.IFeatureDatasetfeatureDataset=featureWorkspace.OpenFeatureDataset(FEATURE_DATASET);varfeatureDatasetExtensionContainer=featureDatasetasESRI.ArcGIS.Geodatabase.IFeatureDatasetExtensionContainer;ESRI.ArcGIS.Geodatabase.IFeatureDatasetExtensionfeatureDatasetExtension=featureDatasetExtensionContainer.FindExtension(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTNetworkDataset);vardatasetContainer3=featureDatasetExtensionasESRI.ArcGIS.Geodatabase.IDatasetContainer3;//Usethecontainertoopenthenetworkdataset.ESRI.ArcGIS.Geodatabase.IDatasetdataset=datasetContainer3.get_DatasetByName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTNetworkDataset,NETWORK_DATASET);INetworkDatasetnetworkDataset=datasetasINetworkDataset;INALayernaLayerSA=CreateClosestFacilityLayer("ClosestFacility",networkDataset);INAContextnaSAContext=naLayerSA.Context;LoadNANetworkLocations("Incidents",inputStopsFClass,30000,naSAContext);LoadNANetworkLocations("Facilities",inputStopsToFClass,30000,naSAContext);INASolvernaSASolver=naSAContext.Solver;IGPMessagesnGPMessages=newGPMessagesClass();naSASolver.Solve(naSAContext,nGPMessages,newCancelTracker());//运行到此处提示未处理的OutOfMemoryExceptionINALayernaSAResultLayer=naSASolver.CreateLayer(naSAContext);SaveLayerToDisk(naSAResultLayerasILayer,System.Environment.CurrentDirectory+@"ClosestFacility.lyr");}privateINALayerCreateClosestFacilityLayer(StringlayerName,INetworkDatasetnetworkDataset){INAClosestFacilitySolvernaClosestFacilitySolver=newNAClosestFacilitySolverClass();INASolverSettingsnaSolverSettings=naClosestFacilitySolverasINASolverSettings;INASolvernaSolver=naClosestFacilitySolverasINASolver;//GettheNetworkDataset'sDataElementIDatasetComponentdatasetComponent=networkDatasetasIDatasetComponent;boolTestOldData=true;try{IDENetworkDatasetdeNetworkDataset=datasetComponent.DataElementasIDENetworkDataset;}catch(System.Exceptionex){TestOldData=false;}if(TestOldData){IDENetworkDatasetdeNetworkDataset2=datasetComponent.DataElementasIDENetworkDataset;INAContextnaContext;naContext=naSolver.CreateContext(deNetworkDataset2,layerName);INAContextEditnaContextEdit=naContextasINAContextEdit;IGPMessagespGPMessages=newGPMessagesClass();naContextEdit.Bind(networkDataset,pGPMessages);//IGPMessagespGPMessages//naContextEdit.Bind(networkDataset,newGPMessagesClass());//CreatetheNALayerINALayernaLayer;naLayer=naSolver.CreateLayer(naContext);(naLayerasILayer).Name=layerName;naClosestFacilitySolver.OutputLines=esriNAOutputLineType.esriNAOutputLineTrueShapeWithMeasure;naClosestFacilitySolver.TravelDirection=esriNATravelDirection.esriNATravelDirectionToFacility;//UpdatethecontextbasedonthechangesmadetothesolversettingsIGPMessagesmGPMessages=newGPMessagesClass();naSolver.UpdateContext(naContext,deNetworkDataset2,mGPMessages);//ReturnthelayerreturnnaLayer;}else{returnnull;}}publicvoidLoadNANetworkLocations(stringstrNAClassName,IFeatureClassinputFC,doublesnapTolerance,INAContextmm_NAContext){INAClassnaClass;INamedSetclasses;classes=mm_NAContext.NAClasses;naClass=classes.get_ItemByName(strNAClassName)asINAClass;//deleteexistingLocationsexceptifthatabarriersnaClass.DeleteAllRows();//CreateaNAClassLoaderandsetthesnaptolerance(metersunit)INAClassLoaderclassLoader=newNAClassLoader();classLoader.Locator=mm_NAContext.Locator;if(snapTolerance>0)classLoader.Locator.SnapTolerance=snapTolerance;classLoader.NAClass=naClass;//CreatefieldmaptoautomaticallymapfieldsfrominputclasstoNAClassINAClassFieldMapfieldMap;fieldMap=newNAClassFieldMap();fieldMap.CreateMapping(naClass.ClassDefinition,inputFC.Fields);classLoader.FieldMap=fieldMap;//Avoidloadingnetworklocationsontonon-traversableportionsofelementsINALocator3locator=mm_NAContext.LocatorasINALocator3;locator.ExcludeRestrictedElements=true;locator.CacheRestrictedElements(mm_NAContext);//LoadNetworkLocationsintrowsIn=0;introwsLocated=0;IFeatureCursorfeatureCursor=inputFC.Search(null,true);classLoader.Load(featureCursorasICursor,null,refrowsIn,refrowsLocated);//Messageallofthenetworkanalysisagentsthattheanalysiscontexthaschanged((INAContextEdit)mm_NAContext).ContextChanged();}

实在不清楚为什么Solve方法报了这样一个错误,加载的设施点与时间点均为10000点,在ArcgisDesktop中可以正常加载点位计算前往最近设施的路线···但是会提示有个别点不在路网上···想请各位大神帮我分析一下报错原因····拜谢各位了

解决方案

解决方案二:
看下是不是内存没有释放造成的。

时间: 2024-11-17 08:44:22

ArcEngine关于INASover在中ClosestFacility分析中内存溢出的问题的相关文章

weblogic oom分析-weblogic内存溢出outofmemory日志分析

问题描述 weblogic内存溢出outofmemory日志分析 软件环境: aix 6.1+weblogic10.3+oracle11系统每天同时在线人数100左右,数据库的数据量有多张频繁操作的表数据记录在千万以上,主要后台自动处理线程过多.系统前段时间运行一直正常,只是从7月底出现OOM最近差不多半个月出现一次.对weblogic产生的phd文件和javacore文件分析的不太清楚...以下是javacore的日志: WARNING Java heap is almost exhauste

网站分析中应该掌握的一些数据

要想把网站优化的很出色,就要懂得如何分析.整理好准备进行优化的网站资料,还需要把网站根据搜索引擎的喜爱进行调整,然后从各个方面分析找出问题,并且拿出好的解决方案,才可以开始优化工作.那么当网站做好了以后大家就要对网站的效果进行数据分析了,对于工作中网站分析中应该掌握的一些数据有哪些?接下来孙旸杰给大家进行详细介绍: 网站数据分析,指的是通过观察.调查.实验.测量等结果,通过数据的显示行式把网站各方面情况反映出来,使运营者更佳了解网站的运营情况,便于调整网站的运营策略.如今,随着全球互联网的高速发

JAVA中的内存溢出

一.概述 内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题.内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有规律,查看日志或查看数据库也不能定位出问题的代码. 更严重的是内存溢出与数据库锁表在系统开发和单元测试阶段并不容易被发现,当系统正式上线一般时间后,操作的并发量上来了,数据也积累了一些,系统就

Tomcat内存溢出的三种情况及解决办法分析

Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space 3.OutOfMemoryError: unable to create new native thread. Tomcat内存溢出解决方案 对于前两种

Java常见内存溢出异常分析与解决_java

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OutOfMemoryError错误,接下来我们就分开来讨论一下.java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因: JVM内存过小.程序不严密,产生了过多的垃圾. 导致OutOfMemor

从google搜索引擎中取分析潜在的竞争对手(完结)

  从google搜索引擎中取分析潜在的竞争对手(完结) google搜索引擎中,分析竞争对手是非常的明确的.也是最精准的.因为google的信息庞大.给出的信息也非常准确.所以在分析竞争对手的时候我们通常都喜欢用google去分析. 简单来了解一下"分析竞争对手的方法". 在我们做任何行业的任何关键词的时候,我们首先要做的就是确定好词之后去分析竞争对手,并且分析竞争对手是必不可少的,对判断关键词的竞争程度以及了解行业是非常有作用的. 竞争对手分析或者有人说只要直接在搜索引擎中搜索核心

浅谈站内分析中不可或缺的一环:IIS日志分析

对于每一个优化人员来说都需要具备一定的分析能力,分析用户的搜索行为.分析站点的数据流量等等.只有合理的分析好这一些数据才可以更好的制定我们的优化策略.其中在我们的站内分析中不可缺少的一项就是分析搜索引擎蜘蛛的抓取爬行行为.搜索引擎蜘蛛是我们肉眼所不能看到的,我们要如何分析它的爬行行为呢?我们可以通过分析我们站点的IIS日志. 一:那么从分析IIS日志我们可以从我们的站点上得到什么信息 1:在外链的建设中我们知道网站上的每一个外链都是搜索引擎蜘蛛进入我们网站的入口,对此我们可以观察日志上的蜘蛛的造

搜索引擎链接分析中的链接优化

在网站优化中,常常提到的"内容为王,链接为皇"现在已经不止是这么两点了,另外还有用户体验综合因素在内,内容为王,链接为皇,加上用户体验其实就是三代搜索引擎的各自看重点,其中链接分析也算是运用得最火的技术,在很多黑帽SEO中也有许多技巧都是根据链接分析的漏洞来放大利用.今天成都SEO就来总结一下搜索引擎链接分析的算法. 搜索引擎链接分析中最重要的两个算法要属于PageRank和HITS算法了,两个分别是从随机游走模型和子集传播模型两大模型来计算链接权重的传递方式.   先来看看PageR

LoadRunner结果分析中的响应时间

有些事情其实并不复杂,只不过我们没有关注他,或者说我们没有很好的关注,我们在用LR做性能测试的时候有一个很重要的指标,响应时间,大家都知道这个指标,也知道这个指标可以在结果分析中哪里得到,但是又有多少人知道LR给出的这些值是如何得到的呢?今天在这篇我们中我就给大家揭秘这个事情,有的人说你写这些东西的目的是什么,要告诉大家怎么分析性能测试结果吗,我想关于我写的东西对于分析性能测试的结果有些帮助吧,但是你要是说他就是性能测试结果分析,我想它还不是吧,废话不多说我们开始. 1.在看这篇文章之前我想大家