[OpenMap Users] Projections and loading (Shape '.prj')...

From: JR Andreassen <janrune_at_io.com>
Date: Tue, 03 Oct 2006 10:43:47 -0500

Hi...
 Does anybody know or have anyone made anything to read the accompanying
'.prj' files with shape files ?

There are two issues or question.
Have anyone made any routines to parse the '.prj' files ?

How do I map a projection into the com.bbn.openmap.proj.Proj.
It would solve several problems I have with dataset's comming from
different sources.
The default to I use for OpenMap is:
GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
Some of my other sources use :
PROJCS["NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.3048006096012192]]

How do I load the projection ?

I found the class :com.bbn.openmap.proj.LambertConformalLoader, but I
can't figure out what to load from and what the
syntax is.
The next issue is how to either chain them or load a spesific one for a
dataset or shape file.

I couldn't figure out exactly what the algorithm is for projecting.
 From what I remember from my graphics class( it's been a while), we
allways used point(vector) transformation(matrix) operations.
The nice thing about that approach is that you can chain the ops, sorry
if I telling anyone what they already know.

I couldn't find any matrecies in the proj class or it's children so I
assume it's not done that way.
If someone could either give me a brief desrciption of how it's done and
why, or where to find the info, that would be great.

If anyone could shed some light on this, I'd appriciate it.
Thanks
   JR
--------------------------------------------------------------------------------------------------------------------------------------
I found this entry in the Mail Archives from : Rob Ratcliff
<rratcliff_at_ticom-geo.com>

I'm writing a simple little client that queries a ArcGIS server for data.
The data is in the
NAD_1983_StatePlane_Texas_Central_FIPS_4203 projection which is defined as:

32139 NAD_1983_StatePlane_Texas_Central_FIPS_4203
PROJCS["NAD_1983_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_North_American_1983",DATUM["D_North_Ameri
can_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]
],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000],PARAMETER["False_Northing",3000000],
PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETE
R["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1]]

I have to give it an envelope with the coordinates defined in it's
coordinate system. I'm using the CADRG projection within OpenMap.

After fiddling with it awhile and bugging Don and others with questions, I
came up with this approximation:

         ...
         double factor = 5280*1.1508;
         // origin of local coordinate system
         float lat0 = 29.666667f;
         float lon0 = -100.333333f;
         float x0 = 2296583.333333f;
         float y0 = 9842500.0000f;

         // bounds of openmap screen
         float minx = this.getProjection().getUpperLeft().getLongitude();
         float maxy = this.getProjection().getUpperLeft().getLatitude();
         float maxx = this.getProjection().getLowerRight().getLongitude();
         float miny = this.getProjection().getLowerRight().getLatitude();

         // calculate bounds in local coordinate system
         double rminx = factor*Geo.distanceNM(lat0,lon0,lat0,minx) + x0;
         double rmaxx = factor*Geo.distanceNM(lat0,lon0,lat0,maxx) + x0;
         double rminy = factor*Geo.distanceNM(lat0,lon0,miny,lon0) + y0;
         double rmaxy = factor*Geo.distanceNM(lat0,lon0,maxy,lon0) + y0;


         lines.append("<ENVELOPE minx='"+rminx+"' miny='"+rminy+"' " +"maxx='"+rmaxx+"' maxy='"+rmaxy +"' " +
                                                                "name='Initial_Extent' />");
         //lines.append("<MAPUNITS units=\"decimal_degrees\" />");
         //lines.append("<FILTERCOORDSYS id='32139' />");
         //lines.append("<FEATURECOORDSYS id='4326' />");
         lines.append("<MAPUNITS units='feet' />");
         ...

Unfortunately, I'm off by 10,000 ft or so. Has somebody done this kind of
thing before?

I should be getting numbers like this example:

Bounding Coordinates:
West Bounding Coordinate: -98.179725
East Bounding Coordinate: -97.363673
North Bounding Coordinate: 30.630058
South Bounding Coordinate: 30.015643

Local Bounding Coordinates:
Left Bounding Coordinate: 2978077.571114
Right Bounding Coordinate: 3230603.902780
Bottom Bounding Coordinate: 9981817.451761
Top Bounding Coordinate: 10199521.410375

Thanks,
 Rob



--
[To unsubscribe to this list send an email to "majdart_at_bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Tue Oct 03 2006 - 11:47:46 EDT

This archive was generated by hypermail 2.3.0 : Tue Mar 28 2017 - 23:25:07 EDT