精华内容
下载资源
问答
  • 问题描述:一个shp文件,一个成本距离栅格,怎么求shp中一个点到其它点的成本距离 如果通过arcgis成本距离分析,结果并不是预想的,他得到的是成本栅格到最近源的成本距离,而我们想得到的是其中一个源到他周围源的...

    问题描述:一个shp文件,一个成本距离栅格,怎么求shp中一个点到其它点的成本距离

    如果通过arcgis成本距离分析,结果并不是预想的,他得到的是成本栅格到最近源的成本距离,而我们想得到的是其中一个源到他周围源的成本距离
    成本距离分析
    因此通过二次开发,得到想要的结果
    成本距离需要参数

     StreamWriter sw1 = new StreamWriter(@"c:\temp1\utf-8.txt");
                
                //进行成本距离分析矢量图层与成本栅格图层
                IFeatureLayer2 pFeatureLayer2 = axMapControl1.Map.get_Layer(0) as IFeatureLayer2;
                IRasterLayer pRasterLayer = axMapControl1.Map.get_Layer(1) as IRasterLayer;
    
                //得到矢量中所有要素
                IFeatureClass pFeaClass = pFeatureLayer2.FeatureClass;
                IFeatureCursor pFeaCursor = pFeaClass.Search(null, true);
                //取第一个要素
                IFeature pfeature = pFeaCursor.NextFeature();
    
                while (pfeature!=null)
                {   
    
                    Console.WriteLine(pfeature.Value[0]);
                    //获取ID
                    String strFID = pfeature.Value[0]+"";
    
    
                    IQueryFilter pQFilter =new QueryFilter();
                    pQFilter.WhereClause = "FID=" + strFID;
    
                    IFeatureClassDescriptor pFCDescriptor = new FeatureClassDescriptor() as IFeatureClassDescriptor;
                    pFCDescriptor.Create(pFeaClass, pQFilter, "");
    
                    //得到进行成本距离分析的参数
                    IGeoDataset pFeatureGeoDataset = pFCDescriptor as IGeoDataset;
                    IGeoDataset pRasterTimeGeoDataset = pRasterLayer as IGeoDataset;
    
                    //实例化距离分析
                    IDistanceOp2 DisOp = new RasterDistanceOp() as IDistanceOp2;
    
                    IRasterAnalysisEnvironment pRaEnvi=DisOp as IRasterAnalysisEnvironment;
    
                    IEnvelope envelope = new Envelope() as IEnvelope;
    
                    IPoint pPoint = (IPoint)pfeature.Shape;
    
                    envelope.XMax= pPoint.X + 6000;
                    envelope.XMin= pPoint.X-6000;
                    envelope.YMax = pPoint.Y + 6000;
                    envelope.YMin = pPoint.Y-6000;
    
    
                    object extendProvider = (object)envelope;
    
                    pRaEnvi.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue,ref extendProvider,ref extendProvider);
    
    
    
                    IWorkspaceFactory pRasterWorkSpaceFactory1 = new RasterWorkspaceFactory();
                    IRasterWorkspace pRasterWorkspace = pRasterWorkSpaceFactory1.OpenFromFile("c:\\temp", 0) as IRasterWorkspace;
    
    
                    IWorkspace pWorkspace1 = pRasterWorkspace as IWorkspace;
                    pRaEnvi.OutWorkspace = pWorkspace1;
    
                    //搜索半径,累计成本不能超过这个值
                    //注意成本栅格值的现实意义
          
                    int MaxDistance = int.Parse("60") * 10000;
                    object MaxDisObj = (object)MaxDistance;
    
                    //表示不传此参数
                    object Missing = Type.Missing;
    
                    IGeoDataset pCostWeight = DisOp.CostDistance(pFeatureGeoDataset, pRasterTimeGeoDataset, ref MaxDisObj, ref Missing);
    
    
                    IRaster pCostRaster = pCostWeight as IRaster;
                    IRaster2 pMaskRaster = (IRaster2)pCostRaster;
                    IRasterProps pMaskProps=(IRasterProps)pMaskRaster;
                    IEnvelope pMaskEnvelope = pMaskProps.Extent;
    
    
                    ISpatialFilter pSpatialFilter = new SpatialFilter();
                    pSpatialFilter.Geometry = (IGeometry)pMaskEnvelope;
                    pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
    
                    //空间分析,拿到在指定范围内shp的要素
                    IFeatureCursor pSelectFeatureCursor = pFeaClass.Search(pSpatialFilter, false);
    
                    IFeature pSelectFeature=pSelectFeatureCursor.NextFeature();
    
    
                    //以下为获取指定范围内的要素的成本距离
                    while(pSelectFeature!=null)
                    {
                        IPoint pSelectPoint = (IPoint)pSelectFeature.Shape;
                        int row = 0;
                        int col = 0;
                        pMaskRaster.MapToPixel(pSelectPoint.X, pSelectPoint.Y, out col, out row);
                        if (col >=0 &&row >= 0 && col <= pMaskProps.Width && row <= pMaskProps.Height)
                        {
                            if (pMaskRaster.GetPixelValue(0,col, row)!= null)
                            {
    
                                float pValue = (float)Convert.ToInt32(pMaskRaster.GetPixelValue(0, col, row));
                                
                                //根据成本栅格值现实意义决定是否处理
                                float ptime = pValue/10000;
                                string FromPointFID = pfeature.OID.ToString();
                                string ToPointFID = pSelectFeature.OID.ToString();
                                if(FromPointFID!= ToPointFID)
                                {
                                    //将结果写入文件
                                    sw1.WriteLine(FromPointFID + " " + ToPointFID + " " + ptime);
                                }
    
                            }
                        }
                        pSelectFeature = pSelectFeatureCursor.NextFeature();
                    }
    
                    //移动到下一个要素
                    pfeature = pFeaCursor.NextFeature();
    
    
                }
    
                sw1.Close();
    
    
    
            }
    
    展开全文
  • 使用图论创建累积成本距离栅格可被视作尝试识别最低成本像元,并将其添加到输出列表。这是起始于源像元的迭代过程。每个像元的目标是快速分配到输出成本距离栅格中。
  • 成本距离处理中遇到的小问题

    千次阅读 2018-10-05 21:03:48
    1,成本距离的计算失败,输出为0  解决办法:成本距离的计算属于表面分析,需要连续的栅格图像,由于采用了非连续的水文数据,所以导致了处理输出的结果为0  2,成本距离的出来了输出结果的范围与所期望的范围...

    最近在处理最短路径时,需要计算成本范围,处理过程中遇到了一些小问题。

    1,成本距离的计算失败,输出为0 

    解决办法:成本距离的计算属于表面分析,需要连续的栅格图像,由于采用了非连续的水文数据,所以导致了处理输出的结果为0 

    2,成本距离的出来了输出结果的范围与所期望的范围不同

    解决方法:在工具的使用过程中默认的处理范围可能与所期望的处理范围不同,所以可以在工具的设置的处理范围的设置里进行更改。

    展开全文
  • 计算成本距离

    2019-06-07 12:07:18
    自己遇到的问题需要注意 各个成本因子一定要一致(最大值 成本小或最小值 成本小) 如果值大 成本小 重分类是 村落密度 密度越大 分类值越大 坡度 坡度越小 分类值越大 ...

    自己遇到的问题需要注意
    各个成本因子一定要一致(最大值 成本小或最小值 成本小)
    如果值大 成本小
    重分类是
    村落密度 密度越大 分类值越大
    坡度 坡度越小 分类值越大

    展开全文
  • 成本距离工具可创建输入栅格,在栅格中为每个像元分配到最近源像元的累积成本。该算法应用在图论中使用的结点/连接线像元制图表达。在结点/连接线制图表达中,各像元的中心被视为结点,并且各结点通过多条连接线与其...
  • ArcGIS教程:了解成本距离分析

    万次阅读 2014-07-10 14:47:38
     成本距离工具与欧氏工具相类似,不同点在于欧氏工具计算的是位置间的实际距离,而成本距离工具确定的是各像元距最近源位置的最短加权距离(或者说是累积行程成本)。这些工具应用的是以成本单位表示的距离,而不是以...

      从像元的角度来讲,成本工具的目标是确定“分析”窗口中各像元位置到某个源的最小成本路径。您必须确定每个像元的通向源的最低累积成本路径、考虑了最小成本路径的源,以及最小成本路径本身。

      成本距离工具与欧氏工具相类似,不同点在于欧氏工具计算的是位置间的实际距离,而成本距离工具确定的是各像元距最近源位置的最短加权距离(或者说是累积行程成本)。这些工具应用的是以成本单位表示的距离,而不是以地理单位表示的距离。

      所有成本距离工具都需要源数据集和成本栅格数据集作为输入。

      成本距离输出

      以下部分介绍了成本距离工具的各种类型的输出。

      距离输出

      成本距离工具的输出记录了从各个像元到达最近源所耗费的累积成本。

      例如,请考虑下图中像元值标识为 1 和 2 的源位置:


      从源像元 1(暗橙色)到达目的地(学校图标)的最小累积成本路线为 10.5。


      回溯链接方向输

      输出成本距离栅格对返回至最近源位置的各像元的累积成本进行标识时,它并不会显示要返回哪一个源像元以及如何返回。成本回溯链接工具返回一个方向栅格作为输出,以提供标识一幅从任一像元沿最小成本路径返回最近源的基础道路地图。

      用于计算回溯链接栅格的算法会为每个像元分配一个代码值。该代码为一系列介于 0 到 8 之间的整数。值 0 用于表示源位置,因为从本质上讲,它们已经达到了目的地(即源本身)。值 1 到值 8 按顺时针方向从右侧开始依次对方向进行编码。以下是方向输出中所使用的默认符号,以及结合了方向箭头和颜色符号的箭头图:


      例如,如果为某一输出像元赋予 5,以作为通往源的最小成本路径的一部分,则路径应向左侧的相邻像元移动。如果像元的值是 7,则说明路径应向正北方移动,依此类推。

      在上面的示例中,从值为 10.5 的像元前往源(校址)的最小成本路径为沿对角线移动,通过值为 5.7 的像元。回溯链接栅格显示了从各像元前往最近的源时的行进方向。


      方向算法为值为 10.5 的像元赋予值 4,而为值为 5.7 的像元也赋予值 4,因为(根据上述方向编码)这便是从各像元返回源时的最小成本路径方向。

      对输出回溯链接栅格中的所有像元执行这一过程,以便生成一个输出,指明从成本距离栅格中的每个像元返回源时的行进方向。


      分配输出

      成本分配工具的输出可标识出各像元被分配到哪个最近源。该输出在概念上与欧氏分配工具的输出相似,不同之处在于这里所谓的“最近”是就累积行程成本而论的。


      可选输出

      除各工具的特定输出栅格外,成本工具还可用于创建其他类型的成本输出。成本距离工具可创建成本回溯链接栅格,成本回溯链接工具可创建成本距离栅格。成本分配工具既可创建距离栅格,也可创建回溯链接栅格。如果您想通过单个工具创建其他类型的输出,这将非常有用。

      “成本路径”工具

      创建累积成本栅格和回溯链接栅格后,便可从任一指定目的地像元或区域生成最小成本路径。成本路径工具会沿回溯链接栅格从目的地像元回溯到源。

      成本距离输入

      源输入

      如果源数据集是一个栅格数据,它可能包含单个或多个区域。这些区域可以相连,也可以不相连。所有具有值(包括0)的像元都将作为源像元进行处理。源栅格中的所有非源像元都必须赋予值 NoData。而分配给源位置(栅格或要素)的原始值则得以保留。

      如果源数据集是一个要素数据集,则会在内部将其转换为栅格,而该栅格的分辨率将由环境决定;如果并未明确设置分辨率,则将采用与输入成本栅格相同的分辨率。如果源数据是一个栅格数据,则会使用源栅格的像元大小。从此处开始,本文档将假设已将要素源数据转换为栅格数据。

      不存在任何对于输入栅格或要素源数据中源的数量的固有限制。

      成本输入

      成本栅格可以是单个栅格,且通常都是多个栅格组合的结果。为成本栅格指定的单位可以是任何所需成本类型:金钱成本、时间、能量消耗、或相对于分配给其他像元的成本而得出其含义的无单位系统。输入成本栅格上的值可以是整型或浮点型,但不可以是负值或 0(成本不能为负或为零)。成本栅格不可以包含值 0,因为该算法是一个乘法过程。

    展开全文
  • ArcGIS教程:成本距离 (空间分析)

    千次阅读 2015-12-07 11:59:15
    计算每个单元到成本面上最近源的最小累积成本距离
  • 01方法概述栅格成本距离分析法以格网为单元,基于路网栅格数据测度成本栅格数据,再计算各栅格单元到源(中心城市)累计耗费距离的区域可达性,再根据可达性,确定栅格归属的中心城市,最终得到城市影响腹地范围。...
  • 01方法概述栅格成本距离分析法以格网为单元,基于路网栅格数据测度成本栅格数据,再计算各栅格单元到源(中心城市)累计耗费距离的区域可达性,再根据可达性,确定栅格归属的中心城市,最终得到城市影响腹地范围。...
  • //进行成本距离的计算 object maxDistance = System.Reflection. Missing .Value; object valueRaster = System.Reflection. Missing .Value; IGeoDataset outputDataset = distanceOp.CostDistance...
  • 距离成本计算器

    2011-11-20 10:17:13
    <p>Hello I am looking for a distance cost calculator like airports, taxi firms would have for example: <p>from x to xx it will cost ... ...however i cannot work out how to get it to work e.g....
  • 海报:关于低成本距离自适应的无设备本地化
  • 基于距离测度的成本和精度意识科学工作流检索
  • 系统所需的8B/10B 编解码、数据时钟恢复(CDR)、串/并行转换电路、误码率计算模块均在FPGA 内利用VHDL 语言设计实现,大大降低了系统互联的复杂度和成本,提高了系统集成度和稳定性。  0、引言  在地质勘探、工业...
  • 借助Altera Cyclone III FPGA的LVDS I/O通道产生LVDS信号,稳定地完成了数据的高速、远距离传输。系统所需的8B/10B编解码、数据时钟恢复(CDR)、串/并行转换电路、误码率计算模块均在FPGA内利用VHDL语言设计实现,...
  • 随着人类社会信息化速率的加快,... 随着对通信系统传输容量要求的提高,为了提高多通道传输系统的传输距离,在长距离通信的DWDM传输系统中采用了EDFA技术,使光纤衰减对传输距离的限制问题得以解决,传输距离
  • 我国二氧化碳的边际减排成本与区域差异:基于方向距离函数的研究,陈德湖,潘英超,测算二氧化碳的边际减排成本有利于评估区域碳减排潜力与成本,也是落实区域碳交易政策的重要依据。本文采用二次型方向距离函数,
  • 系统所需的8B/10B 编解码、数据时钟恢复(CDR)、串/并行转换电路、误码率计算模块均在FPGA 内利用VHDL 语言设计实现,大大降低了系统互联的复杂度和成本,提高了系统集成度和稳定性。  0、引言  在地质勘探、工业...
  • 问题提出ArcGIS的距离分析工具箱主要提供用于计算输出栅格中每个像元到输入的最近源的最小累积成本距离或路径的工具。距离分析的输入可以是栅格数据,也可以是矢量的要素类数据,但输出均为栅格数据。中距离分析中最...
  • 除了需要指定目标外,成本路径工具还将用到通过成本距离工具得出的两个栅格:成本最低距离栅格和回溯链接栅格。这些栅格可通过成本距离工具或路径距离工具生成。回溯链接栅格可用于在成本距离表面上从目标沿最低成本...
  • 深入路径距离分析(一)

    千次阅读 2014-09-15 09:10:22
    写这篇之前,整理过空间分析中的距离分析工具箱,今天继续深入的说说成本距离分析。开始成本距离分析之前,先回忆下最基本的欧式距离分析,也就是直线距离分析,欧式距离分析遵循的就是我们小学都知道的“两点之间...
  • 编辑距离 思路 代码 class Solution: ### 0121 动态规划(156 ms,18.3 MB) def minDistance(self, word1: str, word2: str) -> int: n1, n2 = len(word1), len(word2) # 若其中一个单词为空,则直接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,364
精华内容 1,745
关键字:

成本距离