zoukankan      html  css  js  c++  java
  • ArcGIS 基于AO 实现的经纬度定位

    原文地址:http://www.cnblogs.com/binlee/archive/2011/04/28/2032160.html

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;
    using System.Web;
    using ESRI.ArcGIS.Geometry;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.Geodatabase;
    using ESRI.ArcGIS.DataSourcesGDB;
    using ESRI.ArcGIS.DataSourcesFile;
    using System.IO;
    using ESRI.ArcGIS.Server;

    // 注意: 如果更改此处的类名“Service”,也必须更新 Web.config 和关联的 .svc 文件中对“Service”的引用。
    public class AddressReverse: IAddressReverse
    {   
      IPoint pPoint;
        public string AddressRevServer(double iLongtitude, double iLatitude)
        {
            //ArcGis Server的身份验证,服务是需要验证的
            ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity("ArcGISWebServices""1""sse12a2db84c65");
            ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection gisServerConnection;
            gisServerConnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("sse12a2db84c65", identity);
            gisServerConnection.Connect();
            IServerObjectManager4 serverObjectManager = (IServerObjectManager4)gisServerConnection.ServerObjectManager;
            IServerContext serverContext = serverObjectManager.CreateServerContext("""");//创建一个空的服务器上下文
            string result = string.Empty;//保存最终的地址

                    IFeatureWorkspace pFeatureWorkspace;
                    IFeatureLayer pFeatureLayer;
                    IFeatureClass cityfeatureClass;
                    IFeatureClass xiangfeatureClass;
                    IFeatureClass cunfeatureClass;
       
                    string cityfilePath = @"E:\fjWGS1984"//数据目录
                    string cityfileName = @"city_Project.shp"//市图层
                    string xiangfilename = @"xiang_region_town_Project.shp";//乡镇图层
                    string cunfilename = @"xiang_region_county_Project.shp";//村图层

                    IWorkspaceFactory factory = (IWorkspaceFactory)serverContext.CreateObject("esriDataSourcesFile.ShapefileWorkspaceFactory");

                    //创建point,服务里面涉及到com组件的不能用new,只能用CreateObject
                    pPoint = serverContext.CreateObject("esriGeometry.Point"as IPoint;
                    //给point赋经纬度值
                    pPoint.PutCoords(iLongtitude, iLatitude);
          //打开工作空间
                    pFeatureWorkspace = (IFeatureWorkspace)factory.OpenFromFile(cityfilePath, 0);
                    pFeatureLayer = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(cityfileName);
                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    cityfeatureClass = pFeatureWorkspace.OpenFeatureClass(cityfileName);
          //创建spatialFilter,用于空间查询
                    ISpatialFilter spatialFilter = serverContext.CreateObject("esriGeoDatabase.SpatialFilter"as ESRI.ArcGIS.Geodatabase.SpatialFilter;
                    spatialFilter.Geometry = pPoint;
                    spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;// 空间关系是相交
                    spatialFilter.GeometryField = cityfeatureClass.ShapeFieldName;
                    
                    //获取与点相交的市图层中的feature
                    IFeatureCursor featureCursor = cityfeatureClass.Search(spatialFilter, false);
                    IFeature resultFeature = featureCursor.NextFeature();
                    if (resultFeature != null)
                    {
                        result+=resultFeature.get_Value(resultFeature.Fields.FindField("SNAME")).ToString();//获取城市名称
                    }


               //获取县名称
                    pFeatureWorkspace = (IFeatureWorkspace)factory.OpenFromFile(cityfilePath, 0);
                    pFeatureLayer = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(cunfilename);
                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    cunfeatureClass = pFeatureWorkspace.OpenFeatureClass(cunfilename);

                    IFeatureCursor featureCursorcun = cunfeatureClass.Search(spatialFilter, false);
                    IFeature resultFeaturecun = featureCursorcun.NextFeature();
                    if (resultFeaturecun != null)
                    {
                        result += resultFeaturecun.get_Value(resultFeaturecun.Fields.FindField("XNAME")).ToString();
                    }

                    //获取乡镇名称
                    pFeatureWorkspace = (IFeatureWorkspace)factory.OpenFromFile(cityfilePath, 0);
                    pFeatureLayer = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(xiangfilename);
                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    xiangfeatureClass = pFeatureWorkspace.OpenFeatureClass(xiangfilename);

                    IFeatureCursor featureCursortown = xiangfeatureClass.Search(spatialFilter, false);
                    IFeature resultFeaturetown = featureCursortown.NextFeature();
                    if (resultFeaturetown != null)
                    {
                        result += resultFeaturetown.get_Value(resultFeaturetown.Fields.FindField("ZNAME")).ToString();
                    }

                    return result;
        }

  • 相关阅读:
    You are not late! You are not early!
    在同一个服务器(同一个IP)为不同域名绑定的免费SSL证书
    Vue.js Is Good, but Is It Better Than Angular or React?
    It was not possible to find any compatible framework version
    VS增加插件 Supercharger破解教程
    Git使用ssh key
    Disconnected: No supported authentication methods available (server sent: publickey)
    VS 2013打开.edmx文件时报类型转换异常
    asp.net MVC4 框架揭秘 读书笔记系列3
    asp.net MVC4 框架揭秘 读书笔记系列2
  • 原文地址:https://www.cnblogs.com/merray/p/2534614.html
Copyright © 2011-2022 走看看