arcgis engine C# 开发,如何实现计算点到面距离的计算?谢谢~:一般面与一般面相交

arcengine判断一个点是不是 在一个面中
用IRelationalOperator.Contains Method
具体参考Developer Help
ArcEngine 判断线是否为面的边界
IRelationalOperator.Overlaps方法 判断线与多边形的边界是否重叠
ITopologicalOperator.Boundary获取多边形的边界
arcgis engine C# 开发,如何实现计算点到面距离的计算?谢谢~
在AE中这叫点选查询,其中你可你自己的坐标来替换 下面的
IMap pMap = axMapControl1.Map;
IActiveView pActiveView = pMap as IActiveView;
IFeatureLayer pFeatureLayer = pMap.get_Layer(0) as IFeatureLayer;
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
//设置点击点的位置
IPoint point = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);
ITopologicalOperator pTOpo = point as ITopologicalOperator;
double length;
length = ConvertPixelsToMapUnits(pActiveView, 4);
IGeometry pBuffer = pTOpo.Buffer(length);
IGeometry pGeomentry = pBuffer.Envelope;
//空间滤过器
ISpatialFilter pSpatialFilter = new SpatialFilter();
pSpatialFilter.Geometry = pGeomentry;
//根据被选择要素的不同,设置不同的空间滤过关系
switch (pFeatureClass.ShapeType)
{
case esriGeometryType.esriGeometryPoint:
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
break;
case esriGeometryType.esriGeometryPolyline:
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;
break;
case esriGeometryType.esriGeometryPolygon:
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
break;
}
IFeatureSelection pFSelection = pFeatureLayer as IFeatureSelection;
pFSelection.SelectFeatures(pSpatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
ISelectionSet pSelectionset = pFSelection.SelectionSet;
ICursor pCursor;
pSelectionset.Search(null, true, out pCursor);
IFeatureCursor pFeatCursor = pCursor as IFeatureCursor;
IFeature pFeature = pFeatCursor.NextFeature();
while (pFeature != null)
{
pMap.SelectFeature(pFeatureLayer, pFeature);
pFeature = pFeatCursor.NextFeature();
pFeture.get_value("");//在这里你可以写上想要获取的属性的字段
}
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphicSelection, null, null);
上述的自定义函数是将距离的转换
private double ConvertPixelsToMapUnits(IActiveView pActiveView, double pixelUnits)
{
// Uses the ratio of the size of the map in pixels to map units to do the conversion
IPoint p1 = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.UpperLeft;
IPoint p2 = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.UpperRight;
int x1, x2, y1, y2;
pActiveView.ScreenDisplay.DisplayTransformation.FromMapPoint(p1, out x1, out y1);
pActiveView.ScreenDisplay.DisplayTransformation.FromMapPoint(p2, out x2, out y2);
double pixelExtent = x2 - x1;
double realWorldDisplayExtent = pActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds.Width;
double sizeOfOnePixel = realWorldDisplayExtent / pixelExtent;
return pixelUnits * sizeOfOnePixel;
}
求助:如何利用C#和ArcEngine计算通视区域的面积?
可以域,你能算出可视的范围么?有算法么?如果有,就方便了
win7 64位系统,有关C#和arcengine二次开发的没有注册类和license方面的问题!
在项目属性里设置“生成”=>“目标平台”为x86而不是默认的ANY CPU
ArcEngine只是32位的,64为需要把环境改成32位的 。。。
C# ArcEngine二次开发,往地图中添加点时,点的坐标赋值是经纬度坐标还是平面坐标?
【arcgis engine C# 开发,如何实现计算点到面距离的计算?谢谢~:一般面与一般面相交】把你需要采用的平面坐标也说出来,建立图层时图层有个上下左右范围,如果是经纬度这个值就很小,所以报错说坐标或测量值超出范围 。当然把你的功能说清楚也可能我会写点代码 。
arcengine 如何使两个面要素不重叠
DataSet数据集对象:可分为两大:Table和GeoDataset,GeoDataset是一个抽象类,了拥间属性的数据集,FeatureDataset、要素类FeatureClass、TIN和栅格数据集RasterDataset 。
创建要素数据集就是创建FeatureDataset,创建线要素和面要素就是创建FeatureClass,只是其Geometry不同而已 。
多看看AE开发的书籍吧 。