Coordinates from non-earth map

1,812 views
Skip to first unread message

Joel Leach

unread,
Aug 12, 2011, 3:01:57 PM8/12/11
to mapi...@googlegroups.com
Hi everyone,

A little background... for years, our company has drawn cemetery maps using a non-earth projection (feet), rather than real-world coordinates.  I'm not sure why, but that decision was made before my time, and all of our programs and existing maps are non-earth.  I'm the developer maintaining our programs, and I can handle MapBasic just fine, but I'm weak on the actual mapping/GIS side.  We are currently using MapInfo Pro 10.5.

The issue is that one of our clients wants us to pull longitude/latitude coordinates from the map, so they can look up grave locations on a GPS.  The map is at 0,0 feet, not the real location.  I can move all the objects to the real location using Objects->Offset.  That works fine, but when I change the projection in Map->Options to Longitude/Latitude, the objects get scrunched/skewed.  Is there anything I can do about that?  FYI, if I change the projection when the objects are at the original location (0,0), the objects retain their shape/position and do not get skewed.

Thanks,

Joel

Richard Greenwood

unread,
Aug 12, 2011, 6:00:11 PM8/12/11
to mapi...@googlegroups.com

Joel,

Longitude/Latitude is spherical while your non-earth coordinate system
is Cartesian. I'd suggest doing your offset to an appropriate
real-world Cartesian system, e.g. UTM or State Plane. The convert that
to Longitude/Latitude with the "Save Copy As" command.

The only way that I know how to convert a non-earth to real-world
system is to save the non-earth is MID/MIF and then edit (copy &
paste) the coordinate system definition.

If my explanation above is too cryptic reply and I'll try to explain
better. Others may offer an easier approach.

Rich

--
Richard Greenwood
richard....@gmail.com
www.greenwoodmap.com

Uffe Kousgaard

unread,
Aug 12, 2011, 6:08:56 PM8/12/11
to mapi...@googlegroups.com
Richard Greenwood wrote:
> The only way that I know how to convert a non-earth to real-world
> system is to save the non-earth is MID/MIF and then edit (copy &
> paste) the coordinate system definition.
>
>
But that doesn't change the coordinates to state plane or anything else
well-known. A transformation is required, slightly similar to what you
do when geo-registering a bitmap.

I have only done this once and then I used arcgis, because I didn't know
how to easily do it with MapInfo. Looking at the available tools in
MapInfo now, I wouldn't be surprised if the "Register Vector" utility
does exactly this.

Regards
Uffe Kousgaard

Richard Greenwood

unread,
Aug 12, 2011, 6:47:25 PM8/12/11
to mapi...@googlegroups.com
On Fri, Aug 12, 2011 at 4:08 PM, Uffe Kousgaard <uf...@routeware.dk> wrote:
> Richard Greenwood wrote:
>>
>> The only way that I know how to convert a non-earth to real-world
>> system is to save the non-earth is MID/MIF and then edit (copy &
>> paste) the coordinate system definition.
>>
>>
>
> But that doesn't change the coordinates to state plane or anything else
> well-known. A transformation is required, slightly similar to what you do
> when geo-registering a bitmap.

My replies really seem to be too terse for this list....

Offsetting the origin of the non-earth coordinate system will put it
onto a real-world system assuming that you know the real-world
coordinates of your assumed system. The OP seemed comfortable with
this step.

But MapInfo still sees the system as non-earth. So you save your
non-earth table to MID/MIF which is an ASCII format that can be edited
with a text editor. One of the MID/MIF files (I forget which) will
contain a line defining the coordinate system, which will be
non-earth. This line need to be replace with the definition of the
real-world system. This can be copied from a MID/MIF file of the
correct coord system.

The the MID/MIF is imported into MapInfo and will be recognized by MI
as real-world. At this point the MI "Save Copy As" option can be
selected, saving the real-world Cartesian tale to Lat/Long.

Regards,

Joel Leach

unread,
Aug 12, 2011, 7:00:41 PM8/12/11
to mapi...@googlegroups.com
Thanks for the replies.  I'll take a look at both of those recommendations.  In the meantime, I've done some calculations outside of MapInfo to convert feet to longitude/latitude.  My end goal is to get the coordinates, not to convert the map to real-world (that would break our MapBasic programs).  I'm pretty close, but maybe not as close as MapInfo would be if I can successfully get the map into real-world. I'll keep at it. For those that are interested, here is some info on the calculations:

http://stackoverflow.com/questions/609379/how-do-i-convert-coordinates-to-a-latitude-longitude/609562#609562

Thanks,

Joel

Richard Greenwood

unread,
Aug 12, 2011, 8:09:41 PM8/12/11
to mapi...@googlegroups.com


That's ugly. I'd really recommend working with a "real" real-world
coordinate system.

Lars I. Nielsen (GisPro)

unread,
Aug 13, 2011, 2:37:24 AM8/13/11
to mapi...@googlegroups.com
Hi Joel,

The way to bring NonEarth maps into an Earth setting is, as Rich says, via MIF/MID.

But you need to observe two things :

1. You need to bring them into a _projected_ coordinate system, not directly into LatLong.

2. You need to change not only the COORDSYS clause in the MIF file, but also the TRANSFORM clause.

The TRANSFORM clause lets you offset and scale your NonEarth coordinate values during import, so they'll fit the coordsys projection you enter.

If your NonEarth is rotated wrt. the projection, it's somewhat more complicated, so choose the projection carefully.

After the data has been properly entered into an Earth setup, then you can save a copy of it into LatLong via Pro.

--

For general information: NonEarth is handled by Pro as a tangential plane touching the Earth in LatLong (0,0) (i.e. somewhere in Sahara).

"Save As" will maintain the position (!) of the objects when reprojecting, so your data will end up in Africa, if one just use "Save As" directy on NonEarth data.


Best regards / Med venlig hilsen
Lars I. Nielsen
GIS & DB Integrator
GisPro
--
You received this message because you are subscribed to the
Google Groups "MapInfo-L" group.To post a message to this group, send
email to mapi...@googlegroups.com
To unsubscribe from this group, go to:
http://groups.google.com/group/mapinfo-l/subscribe?hl=en
For more options, information and links to MapInfo resources (searching
archives, feature requests, to visit our Wiki, visit the Welcome page at
http://groups.google.com/group/mapinfo-l?hl=en

Bill Thoen

unread,
Aug 14, 2011, 3:52:04 PM8/14/11
to mapi...@googlegroups.com
On 8/12/2011 5:00 PM, Joel Leach wrote:
Thanks for the replies.  I'll take a look at both of those recommendations.  In the meantime, I've done some calculations outside of MapInfo to convert feet to longitude/latitude.  My end goal is to get the coordinates, not to convert the map to real-world (that would break our MapBasic programs).  I'm pretty close, but maybe not as close as MapInfo would be if I can successfully get the map into real-world. I'll keep at it. For those
One thing you might want to try (and it's easy) is a technique that MapInfo uses to translate between lon/lat and non-spherical units like meters.  if you assume that the world is an MI Sphere with a circumference of 4003015.47m (which you can verify by typing, print distance( 0,0,90,0, "m")*4 into the MapBasic window.)  Then imagine a tube wrapped around this sphere tangent to the Equator and parallel to the polar axis. Transfer the map on the sphere's surface onto the tube's outer surface projecting perpendicularly from the polar axis. Finally, split the tube at the 180th meridian unroll it and lay it flat, you get a map that's 180 x 90 degrees with height at one-half the width.

This projection is called cylindrical equidistant or Plate Carrée, and it's used when you want a one-to-one associate between geographic coordinates and flatworld coordinates and don't much care about conformal or equal area issues. So now if we superimpose the circumference distances determined above and bias them so that the origin is the intersection of the Prime meridian and the Equator (-20015077.37m to +20015077.37m west to east and -10007538.69m to +10007538.69m south to north) we can translate between lon/lat and meters using just a scale factor (trimmed to 5 significant digits):

meters * 8.9932e-6 = degrees
degrees *  111195 = meters

Pretty easy, eh?

You can check this with MapInfo using a world map displayed in a lon/lat coordinate system. Pick any point, like 32.61944335E, 15.61889361N (Khartoum, Sudan) for example, convert its coordinates to meters and you get  (3627119.0, 1736742.9).

To see MapInfo get the same results, open up a world map in a lon/lat coordinate system and plot the location of Khartoum with a point object (make the layer editable and then when you double click on the point you can set it with precision.) Then in the MapBasic window type, set map XY Units "m" (this changes the map units form degrees to meters.)  Now double-click on the point again, and you should see:



HTH,

- Bill Thoen

Steve King

unread,
Aug 15, 2011, 7:28:20 PM8/15/11
to mapi...@googlegroups.com
Joel
What you need is to set up your own projection clause for the local grid you use in feet at the cemetry.  This is done all the time in the mineral exploration industry where local grids are set up for mineralised zones in different orientations to maintain the grid parallel to the mineralisation.  These local grids are based on a chosen earth based system.  If you have access to Discover it has tools that are easy to use to make your own clause.  You just need a control point table with at least 3 points and their equivalent real world coordinates.  I think I would associate your coords with a UTM zone system first as they are both cartesian and then you could convert to Lat long on the fly.   When you create the clause you will need to add the data bounds to the end of it.  Hope that helps.
If you don't have Discover if you give me the control points I could do it for you.  If its a relatively small area - less than 10km the clause should be accurate to about 10cm.
 
Cheers
 
Steve
--
Reply all
Reply to author
Forward
0 new messages