<div dir="ltr">Greetings.  I'm working with maps provided by the FAA* which include a world file and some meta data. I'm trying to work out how to convert a given lat/lon to a pixel coordinate on the map. I seem to be having some difficulty converting the map metadata into a valid constructor.  Here's the meta data I have:<div>
<br></div><div><dt style="color:rgb(0,0,0);font-family:Times;font-size:medium"><em>Spatial_Reference_Information:</em></dt><dd style="color:rgb(0,0,0);font-family:Times;font-size:medium"><dl><dt><em>Horizontal_Coordinate_System_Definition:</em></dt>
<dd><dl><dt><em>Planar:</em></dt><dd><dl><dt><em>Map_Projection:</em></dt><dd><dl><dt><em>Map_Projection_Name:</em> Lambert Conformal Conic</dt><dt><em>Lambert_Conformal_Conic:</em></dt><dd><dl><dt><em>Standard_Parallel:</em> 33.330000</dt>
<dt><em>Standard_Parallel:</em> 38.660000</dt><dt><em>Longitude_of_Central_Meridian:</em> -93.470000</dt><dt><em>Latitude_of_Projection_Origin:</em> 38.167000</dt><dt><em>False_Easting:</em> 0.000000</dt><dt><em>False_Northing:</em> 0.000000</dt>
</dl></dd></dl></dd><dt><em>Planar_Coordinate_Information:</em></dt><dd><dl><dt><em>Planar_Coordinate_Encoding_Method:</em> row and column</dt><dt><em>Coordinate_Representation:</em></dt><dd><dl><dt><em>Abscissa_Resolution:</em> 63.464794</dt>
<dt><em>Ordinate_Resolution:</em> 63.464794</dt></dl></dd><dt><em>Planar_Distance_Units:</em> meters</dt></dl></dd></dl></dd><dt><em>Geodetic_Model:</em></dt><dd><dl><dt><em>Horizontal_Datum_Name:</em> North American Datum of 1983</dt>
<dt><em>Ellipsoid_Name:</em> Geodetic Reference System 80</dt><dt><em>Semi-major_Axis:</em> 6378137.000000</dt><dt><em>Denominator_of_Flattening_Ratio:</em> 298.257222</dt><dt><br></dt><dt><br></dt></dl></dd></dl></dd></dl>
</dd><div>And here is the constructor I created:</div><div><br></div><div><font face="courier new, monospace">Proj4js.defs["EPSG:9999"] = "+proj=lcc +lat_0=38.167000 +lon_0=-93.470000 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";</font><br>
</div><div><br></div><div><br></div><div>Here is the data from the world file:</div><div><br></div><div><div>63.4647940000</div><div>0.0000000000</div><div>0.0000000000</div><div>-63.4647940000</div><div>-387637.9055536929</div>
<div>-24695.2385093325</div></div><div><br></div><div>And here is the code** I'm running:</div><div><br></div><div><div><font face="courier new, monospace"><SCRIPT type="text/javascript"></font></div><div>
<font face="courier new, monospace">// Put your projection definition here.</font></div><div><font face="courier new, monospace">Proj4js.defs["EPSG:9999"] = "+proj=lcc +lat_0=38.167000 +lon_0=-93.470000 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">var A = 63.4647940000,</font></div><div><font face="courier new, monospace">    D = 0.00000000000,</font></div><div><font face="courier new, monospace">    B = 0.00000000000,</font></div>
<div><font face="courier new, monospace">    E = -63.4647940000,</font></div><div><font face="courier new, monospace">    C = -387637.9055536929,</font></div><div><font face="courier new, monospace">    F = -24695.2385093325;</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">function frompixel(px, py) {</font></div><div><font face="courier new, monospace">    px += 0.5; // Add a half-pixel offset to get the coordinates of the centre of the pixel.</font></div>
<div><font face="courier new, monospace">    py += 0.5;</font></div><div><font face="courier new, monospace">    return {x : A*px + B*py + C, y: D*px + E*py + F};</font></div><div><font face="courier new, monospace">}</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">function tolatlong(x, y) {</font></div><div><font face="courier new, monospace">    var src = new Proj4js.Proj('EPSG:9999'); // Same code as you defined above. Alternatively, let proj4js get the definition from <a href="http://spatialreference.org">spatialreference.org</a></font></div>
<div><font face="courier new, monospace">    var dest = new Proj4js.Proj('EPSG:4326');</font></div><div><font face="courier new, monospace">    var p = frompixel(x, y);</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">    document.write('From coordinates: ');</font></div><div><font face="courier new, monospace">    document.writeln(p.x, ',', p.y);</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">    // This is the bit that does the transformation from map coordinates to lat/long.</font></div><div><font face="courier new, monospace">    Proj4js.transform(src, dest, p);</font></div>
<div><font face="courier new, monospace">    document.write('To lat/long: ');</font></div><div><font face="courier new, monospace">    document.writeln(p.x, ',', p.y);</font></div><div><font face="courier new, monospace">}</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">tolatlong(3000, 2000);</font></div><div><font face="courier new, monospace"></SCRIPT></font></div></div><div><br></div>
<div>Unfortunately, this generates an error:</div><div><br></div><div><font face="courier new, monospace">phi2z has NoConvergence</font><br></div><div><br></div><div>And the unlikely results:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:Times;font-size:medium">From coordinates: -197211.7911566929,-151656.55890633247 To lat/long: -11299403.303493915,-8689280.760810006</span><br>
</div><div><br></div><div>Any suggestions?</div><div><br></div><div><br></div><div>* You can download the sectional chart I'm using here: <a href="http://avn.faa.gov/content/aeronav/sectional_files/Kansas_City_90.zip">http://avn.faa.gov/content/aeronav/sectional_files/Kansas_City_90.zip</a></div>
<div><br></div><div>** Original found here: <a href="http://gis.stackexchange.com/questions/8430/convert-x-y-position-in-georeferenced-image-with-world-file-to-longitude-lat">http://gis.stackexchange.com/questions/8430/convert-x-y-position-in-georeferenced-image-with-world-file-to-longitude-lat</a></div>
<div><br></div>-- <br>Steven Sokol<br><div>408 Camelot Drive</div><div>Liberty, MO 64068<br><br></div><div>mobile: +1 816-806-8844<br>fax: +1 816-817-0441<br><br></div>
</div></div>