2.14beta Geodetic issue


photo

Recommended Posts

Hello,

I created a small terrain with Sandworm (with projection EPSG 2154), added the Geodetics plugin to the IG project, then launched the default app. This is what I get:

---- Engine ----
Version: 2.13.0.0 master-108bc19 Mar 18 2021
[...]
---- Plugins ----
[...]
Loading "IG_double_x64.dll"...
Loading "CIGIConnector_double_x64.dll"...
Plugins initialization: 31173ms
[...]
---- IG ----
Version: trunk(rev: 4745) Mar 18 2021 19:12:52; engine version: 2.13.0.0 (master-108bc19)
Config::load: config loaded 'ig_config.xml'
IG::Manager::on_session_started(): IG session started
Config::getValue: can't find parameter SkyMap.timezone. use default "0.000000"
[...]
Loading "Geodetics_double_x64.dll"...
Loading "gdal.dll"...
GDAL data path: F:/UNIGINE Projects/Test214b/bin/gdaldata/
ERROR 1: latitude or longitude exceeded limits
GeodeticsTransformer::setProjectionEpsg(): couldn't transform origin
ERROR 1: No PROJ.4 translation for destination SRS, coordinate transformation initialization has failed.
ERROR 1: No PROJ.4 translation for source SRS, coordinate transformation initialization has failed.
GeodeticsTransformer::setProjectionWkt(): couldn't transform origin
Manager::init_geodetic_plugin: can't set projection epsg 2154 wkt PROJCRS["RGF93 / Lambert-93",BASEGEOGCRS["RGF93",DATUM["Reseau Geodesique Francais 1993",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["France"],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
Geodetic coordinates are not available!
Correct operation of the IG is not guaranteed!
You should to add a GeodeticPivot to the world, or use Sandworm+GeodeticsPlugin
Config::save: config ig_config.xml was modified
Manager::onWorldInit: geodetic_origin for database 1 was updated in ig_config.xml

The Geodetics plugin is correctly sideloaded by the IG, but the projection is not recognized. This has the effect of making any geo coord usage impossible through CIGI/DIS.

Also, the loader can't read the SkyMap.timezone but this is correctly written in my ig_config.xml:

		<group name="SkyMap">
			<item name="datetime" type="string">2003-12-06T10:30:00</item>
			<item name="timezone" type="int">0</item>
		</group>

The geodetic_origin of the database section is also updated with incorrect values I think:

	<databases>
		<database id="1" world_name="Test214b" geodetic_origin="871648.07885387097 6261293.1156948116 0"/>
	</databases>

Shouldn't it be the "lat lon alt" values instead of something that look like the projected coordinates?

  • Thanks 1
Link to post

Hello!

21 hours ago, Amerio.Stephane said:

Shouldn't it be the "lat lon alt" values instead of something that look like the projected coordinates?

Yes, you are right, there should be geographic coordinates, but Sandworm saves them in projected coordinates instead

There is workaround - to make it work you need to transform coordinates, open ".world" file and find there terrain nodes with following lines (there might be few nodes if you have multiply .lmap layers)

			<node type="LandscapeLayerMap" id="328391667" name="New project_1mpx">
				<variables>
					<sandworm_epsg type="0">2154</sandworm_epsg>
					<sandworm_origin type="8">1130471.8592513711 6726717.3287173398 0</sandworm_origin>
				</variables>

Copy coordinates and then transform it using http://epsg.io/ site, then replace the obtained coordinates with new ones in the following order -> lat lon alt

изображение.png

You should end up with something like the following:

			<node type="LandscapeLayerMap" id="328391667" name="New project_1mpx">
				<variables>
					<sandworm_epsg type="0">2154</sandworm_epsg>
					<sandworm_origin type="8">47.5003586 8.7230868 0</sandworm_origin>
				</variables>

After that everything should work as expected. This issue is already fixed in our internal version.

Thanks for report!

Link to post
Posted (edited)

Hi, I tried to replace the coord in ig_config.xml as described and put the file as read-only. I still have the same issue afterward:

ERROR:	GeodeticsTransformer::setProjectionEpsg(): couldn't transform origin
ERROR:	GeodeticsTransformer::setProjectionWkt(): couldn't transform origin
WARNING:	Manager::init_geodetic_plugin: can't set projection epsg 2154 wkt PROJCRS["RGF93 / Lambert-93",BASEGEOGCRS["RGF93",DATUM["Reseau Geodesique Francais 1993",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["France"],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
WARNING:	Geodetic coordinates are not available! 
WARNING:	Correct operation of the IG is not guaranteed!
WARNING:	You should to add a GeodeticPivot to the world, or use Sandworm+GeodeticsPlugin

(sidenote: it would be cool to have "Unigine Log file" as a format when inserting a code snippet)

In order to carry on with my tests, I'll add a GeodeticPivot (I understand that the coordinates won't match, it's just to continue testing).

Anything about the Config::getValue: can't find parameter SkyMap.timezone. use default "0.000000"  ?

Edited by Amerio.Stephane
Link to post
37 minutes ago, Amerio.Stephane said:

I tried to replace the coord in ig_config.xml

Stephane, I wrote above that you need to edit ".world" file instead of "ig_config.xml" and there is no need to change anything in the last one

37 minutes ago, Amerio.Stephane said:

Anything about the Config::getValue: can't find parameter SkyMap.timezone. use default "0.000000"  ?

This is because "timezone" type was changed from "int" to "float" and after you replace the value here for float everything should work correctly

		<group name="SkyMap">
			<item name="datetime" type="string">2003-12-06T10:30:00</item>
			<item name="timezone" type="int">0</item>
		</group>
  • Thanks 1
Link to post