ThinkGeo.com    |     Documentation    |     Premium Support

Help with Projection and Map Unit conversion

I have two sets of shape files that are not compatible.


- "Plate" shape files with a projection of     NAD 1983 StatePlane New York Long Island FIPS 3104 (Feet)   with Map Units of  Feet.


- Road shape files with: no projection and no Map Units.


I can display them separately with map suite, but I can't display them together with  Feet   Map Units.


Can anyone give me a hand with a projection conversion for the road shape files so that they would display and overlay with those plate files?   The prj of the plates reads as:


PROJCS["NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_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",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]


Any help greatly appreciated.


 



Hi, Frank


We provoide full support for converting projection in run time. You could use the Proj4Projection class to implement it with ease. Please refer to the code below:





                // If want to know more srids, please refer Projections folder in Documentation folder.
                Proj4Projection proj4Projection = new Proj4Projection();
                proj4Projection.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
                proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetNad83ParametersString(3104);
                layer.FeatureSource.Projection = proj4Projection;


And another thing is that you need to set the projection object to the Projection property of Layer's FeatureSource.

Thanks,

Khalil



Thank you so much, Khalil.


I don't know what those eps and nad numbers are.   Are those the actual parms I need for my particular conversion?


Thank you.



Hi, Frank 
  
 Yes, we need the actual srid number or epsg code number for your particular conversion. I guess that your road shape file works in "EPSG:4326" projection and its map unit is DecimalDegree, but your Plate shape file works in another projection and feet map unit. So you need to convert projection in oreder to display the together in fee map unit. You could try to use the code posted in the previous post, and set this projection object on road ShapeFileFeatureLayer to implement it. Also please refer to UseADifferentProjectionForAFeatureLayer sampe in our installed samples which you coud find its source code at "Samples\Projection\UseADifferentProjectionForAFeatureLayer.aspx". 
  
 If you still have any problem on it, please provide your code for us; so we could address it qucikly. If your data is big; please send it to support@thinkgeo.com and ask him to forward me. 
  
 Thanks, 
 Khalil

Khalil - I sent a zip file to    support@thinkgeo.com


Your assistance would be greatly appreciated.  



The spatial reference for your bx_msgrid shapefile is ESRI 102718:


spatialreference.org/ref/esri/102718/


If you want to have your shapefile NY0051ka matching it, you can have the following code:



 Proj4Projection proj4 = new Proj4Projection();

            proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj4.ExternalProjectionParametersString = Proj4Projection.GetEsriParametersString(102718);

            ShapeFileFeatureLayer layer1 = new ShapeFileFeatureLayer(@"..\..\Data\7198\bx_msgrid.shp");
            layer1.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(150,GeoColor.StandardColors.Red), GeoColor.StandardColors.Black);
            layer1.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            ShapeFileFeatureLayer layer2 = new ShapeFileFeatureLayer(@"..\..\Data\7198\NY005lkA.shp");
            layer2.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.LocalRoad3;
            layer2.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            layer2.FeatureSource.Projection = proj4;


Finally looping back to say - thank you for the support.    Much appreciated.



Glad to be of assistance!