日期:2014-05-18  浏览次数:20864 次

ArcEngine中IFeature与IPoint的关系
问题描述:在用C#写engine程序的过程中,想通过查询point类型的shp的属性表查找公共汽车站点,比如查到一个站点的feature,请问如何将这个feature变成一个point类型,从而可以运用最短路径算法,找到两个车站的最短距离(一个车站已定)?

------解决方案--------------------
IFeature 是一个原色,Ipoint是图形

IFeature包含图形的一些其他属性

如果IFeature的图形是点的话,那么可以用
IPoint pt=PFeature.Shape;
------解决方案--------------------
C# code

using System;
using System.Collections;
using System.Text;

namespace Greedy
{   
    class Marx
    {
        private int[] distance;        
        private int row;
        private ArrayList ways = new ArrayList();

        public Marx(int n,params int[] d)
        {
            this.row = n;
            distance = new int[row * row];
            for (int i = 0; i < row * row; i++)
            {
                this.distance[i] = d[i];              
            }
            for (int i = 0; i < this.row; i++)  //有row个点,则从中心到各点的路有row-1条
            {
                ArrayList w = new ArrayList();
                int j = 0;
                w.Add(j);
                ways.Add(w);
            }
        }
        //------------------------------
        public void Find_way()
        {
            ArrayList S = new ArrayList(1);
            ArrayList Sr = new ArrayList(1);
            int []Indexof_distance=new int[this.row];
            
            for(int i=0; i < row; i++)
            { 
                Indexof_distance[i]=i;
            }

            S.Add( Indexof_distance[0] );        

            for (int i = 0; i < this.row; i++)
            {
                Sr.Add( Indexof_distance[i] );
            }
            Sr.RemoveAt(0);
            int[] D = new int[this.row];    //存放中心点到每个点的距离
           
         //---------------以上已经初始化了,S和Sr(里边放的都是点的编号)------------------
            intEnd Fu