Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Latitude and Longitude values to a custom sized grid

I am making a java program that classifies a set of lat/lng coordinates to a specific rectangle of a custom size, so in effect, map the surface of the earth into a custom grid and be able to identify what rectangle/ polygon a point lies in.

The way to do this I am looking into is by using a map projection (possibly Mercator).

For example, assuming I want to classify a long/lat into 'squares' of 100m x 100m,

44.727549, 10.419704 and 44.727572, 10.420460 would classify to area X

and

44.732496, 10.528092 and 44.732999, 10.529465 would classify to area Y as they are within 100m apart. (this assumes they lie within the same boundary of course)

Im not too worried about distortion as I will not need to display the map, but I do need to be able to tell what polygon a set of coordinates belong to.

Is this possible? Any suggestions welcome. Thanks.

Edit

Omitting projection of the poles is also an acceptable loss

like image 888
Gmeister4 Avatar asked Sep 18 '25 01:09

Gmeister4


1 Answers

Here is my final solution (in PHP), creates a bin for every square 100m :

function get_static_pointer_table_id($lat, $lng)
{
    $earth_circumference = 40000; // km

    $lat_bin = round($lat / 0.0009);
    $lng_length = $earth_circumference * cos(deg2rad($lat));
    $number_of_bins_on_lng = $lng_length * 10;
    $lng_bin = round($number_of_bins_on_lng * $lng / 360);
    //the 'bin' unique identifier
    return $lat_bin . "_" . $lng_bin;

}
like image 63
Gmeister4 Avatar answered Sep 20 '25 14:09

Gmeister4