首页 / 浏览问题 / 组件GIS / 问题详情
如何将一串给定的点坐标导入到工作空间生成面数据集
9EXP 2017年05月17日

原始问题:有10个由点串,每个点串都能构成一个封闭的多边形。给定一个经纬度坐标,如何判断这个经纬度坐标为中心,3公里以内的范围内,和哪些多边形相交了。

组件:iObject C++组件。
思路:1. 将所有的10个点串构造成一个数据集。

2.对给定的经纬度坐标点创建一个buffer,通过UGSpatialQuery类的Query方法查询和这个buffer相交的几何对象。由此即可判断出这个点3公里范围内和哪些多边形相交了。

3. 现在遇到的问题就是:如何将给定的这10个点串导入到工作空间中生成面数据集??????

PS  如果有和我的思路不一样的判断方法,也请指教,谢谢啦

1个回答

您好,您可以这样做:

1、新建一个面数据集:DatasetVectorInfo dvi = new DatasetVectorInfo(String datasetName, DatasetType datasetType); workspace1.Datasources[datasourceName].Datasets.Create(dvi);

2、用GeoRegion3D gr3 = new GeoRegion3D(Point3Ds p3d);构筑三维面对象

3、将三维面对象添加到该面数据集中:Recordset rs = (workspace1.Datasources[datasourceName].Datasets[datasetName] as DatasetVector).GetRecordset(false, CursorType cursorType);

rs.AddNew(gr3);

rs.Update();
5,560EXP 2017年05月18日

比如我需要设置GeoRegion3D的ID值,用gr3->setID()方法设置之后,在iDesktop中查看,发现没有设置成功,这个应该怎么处理呢?

您需要先加上gr3.edit(); 然后才可以修改属性(当然最后仍然需要update)。


 

我是设置了ID的,然后再用recordset->AddNew()方法添加到记录集中,这样操作无法成功设置ID字段的值。运行之后,ID字段值仍然是空的。

我已经找到解决办法,具体解决步骤如下:
1. 在新建数据集的时候,调用UGDatasetVector的基类UGTable类的createfield(...)方法给数据集新增一个“ID”字段。

2. 在m_vectorRegion的查询记录集recordRegion的特征要素UGFeature中设置"ID"的值,即可实现将ID字段值保存到数据集中。
 

...