- 积分
- 1490
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-27
- 最后登录
- 1970-1-1

|

楼主 |
发表于 2013-1-25 20:21:09
|
显示全部楼层
MeteoInfo 发表于 2013-1-25 19:09
数据有经纬度,可以用判断点是否在某区域内的函数来筛选,参考此帖:MeteoInfo脚本示例:创建点图层并判断 ...
谢谢王老师,问题已经解决!实现代码如下:
LayerNode ID;
ID = layersLegend1.ActiveMapFrame.GetLayerNodeByName("西南地区.shp");
VectorLayer vLayer=(VectorLayer)ID.MapLayer;
PointD aPoint = new PointD();
int m = 0;
for(int i=0;i<vLayer.ShapeList.Count;i++)
{
PolygonShape aPGS=(PolygonShape)vLayer.ShapeList;
for (int j = 0; j < stationModelData1.GetLength(1);j++)
{
aPoint.X=stationModelData1[0, j];
aPoint.Y=stationModelData1[1, j];
if (GeoComputation.PointInPolygon(aPGS, aPoint))
{
m++;
}
}
}
double[,] stationModelData = new double[10, m];
m = 0;
for (int i = 0; i < vLayer.ShapeList.Count; i++)
{
PolygonShape aPGS = (PolygonShape)vLayer.ShapeList;
for (int j = 0; j < stationModelData1.GetLength(1); j++)
{
aPoint.X = stationModelData1[0, j];
aPoint.Y = stationModelData1[1, j];
if (GeoComputation.PointInPolygon(aPGS, aPoint))
{
for(int n=0;n<10;n++)
{
stationModelData[n,m] = stationModelData1[n,j];
}
m++;
}
}
}
但是我发现这么效率有点低呢,速度很慢,王老师有没有更好的办法呢?我用了一个比较笨的办法,自己是执行了两次,第一次是为了计算那个数组维数,以便申明提取后的数组呢~~~小子C#刚入门呢~~~还有一个问题王老师,就是我用Meteoinfo站点数据图位置对应不对啊,发现整体数据比底图左偏呢,我用的是micaps第一类的自动站数据画的~~~下面是我用的数据,王老师帮忙看看吧~~~
12081410.AWS
(4.04 MB, 下载次数: 1)
|
|