首页 / 浏览问题 / 组件GIS / 问题详情
iobject 数据集投影
29EXP 2017年07月14日
CoordSysTranslator.convert(station,prj,targetDatasource,"TM_SM_STATION_GIS_INFO",null,CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);

我这这种方法,把station(地理坐标系WGS84)数据集投影到prj坐标(Sphere_Mercator)为啥投影以后,TM_SM_STATION_GIS_INFO还是wgs84坐标系,没有改变。是不是方法写错了

1个回答

您好,CoordSysTransParameter该参数是投影转换必填的,不能为空,而CoordSysTransMethod则只需要选择它枚举的方法即可,不需要填转换参数的话,只需实例化一个CoordSysTransMethod占位置即可。如果您要用您自定义的转换算法,我们无法保证您算法的正确性。
5,985EXP 2017年07月14日
CoordSysTransParameter para=new CoordSysTransParameter();
CoordSysTransParameter该怎么获取具体的参数呢,,
我直接定义各个参数,para放在转换方法内,发现还是没有成功呀,,坐标还是没有变。就坐标名称变了,里面坐标没有变

PrjCoordSys prj=MainRoadLine.getPrjCoordSys();刚才定义的目标坐标方式,时根据我数据源中的另外一个数据集获取到的,应该没有问题吧,
你实例化CoordSysTransParameter,设置好参数,CoordSysTransMethod你如果不是自己写转换方法,只需要选择枚举的三参数,七参数,十参数法即可。
CoordSysTransParameter para=new CoordSysTransParameter();
         para.setTranslateX(0);
         para.setTranslateY(0);
         para.setTranslateZ(0);

我是三参数转换,就是想把地理wgs84的转换为投影坐标系而已,,设置都为0,,发现还是不行

CoordSysTranslator.convert(station,prj,targetDatasource,"TM_SM_STATION_GIS_INFO",para,CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
你方法用错了,用CoordSysTranslator.Convert 方法 (Dataset, PrjCoordSys, CoordSysTransParameter, CoordSysTransMethod)

有这个方法,这是投影之后另外生成的一个数据集方法

convert(Dataset sourceDataset, PrjCoordSys targetPrjCoordSys, Datasource targetDatasource, java.lang.String targetDatasetName,CoordSysTransParameter coordSysTransParameter, CoordSysTransMethod coordSysTransMethod) 
          根据目标投影坐标系对数据集进行投影转换,转换后的数据集保存在目标数据源中。

不好意思,刚刚说错了,PrjCoordSys这个里面的参数你是怎么设置的?

DatasetVector MainRoadLine = (DatasetVector) targetDatasource.
                                    getDatasets().get("MainRoadLine");

PrjCoordSys prj=MainRoadLine.getPrjCoordSys();
         CoordSysTransParameter para=new CoordSysTransParameter();
         para.setTranslateX(0);
         para.setTranslateY(0);
         para.setTranslateZ(0);

我是直接从同一个数据源中拿来的另一个数据集的prj,直接用来做targetPrjCoordSys
MainRoadLine的投影坐标系是Sphere_Mercator坐标系吗

对的,,这个是可定的。我初步怀疑系统做转换的时候源数据集的坐标系统默认为Datasource的坐标系,而不是Dataset 的坐标系。。

您查看一下您获取到的 prj是您目标的坐标系吗
这个是没有问题的,,我新投影出来的数据集的坐标也是这个,但是里面的数据的坐标没有变,你知道是啥意思吧,就相当于把wgs84坐标,重新定义为Sphere_Mercator,,而不是投影得到的。
了解了,是Java组件是吧,具体是哪个版本的?

8C

  • (V8.1.1)

你可以测试一下

好纠结

你方便把您的数据集发我吗,Sphere_Mercator坐标系的那个数据集,我的邮箱是hulin@supermap.com
我的是数据库中数据集,我们发不了外网邮件呢,,可以QQ在线跟您聊一下,,
您私信我您的电话号码,我看看呢
15890663097
...