Search code examples
javadictionaryprojection

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


Solution

  • 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;
    
    }