ThinkGeo.com    |     Documentation    |     Premium Support

Is it possible to project UNProjected shapefiles?

Hello! 


I am working with lots of shapefiles and all of them are not being projected, they are using latitude and longitude using this:


Geographic Coordinate System:    GCS_North_American_1983

Datum:     D_North_American_1983

Prime Meridian:     Greenwich

Angular Unit:     Degree


Am I able to project these shapefiles on the fly in my project?  If so what are the steps?


 


Thanks in advance,

Kevin



 


Hi Kevin,
Yes. Just as your description, I think you mean the projection “SR-ORG: 15” which can be found at spatialreference.org/ref/sr-org/15/ . You can find the prj4 string there and then create the instance of Proj4Projection with it.
Thanks,
Johnny

Hey Johnny,


Thanks for the quick reply...


What instance type of Proj4Projection would you create with it?  I see the different types on the side of the HTML page but can you give me a example of this...


Thanks,

Kevin



Hey Johnny,


I figured out to that you can just pass the string to the Proj4Projection :


 



 Proj4Projection proj4Projection = new Proj4Projection();
                proj4Projection.InternalProjectionParametersString = "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs";

...Now when I project the layer nothing is showing up...



proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(2955);

...



 PSAC.FeatureSource.Projection = proj4Projection;


Hi Kevin, 
  
 Glad to hear that you have resolve it. Any questions please let us know. 
  
 Thanks, 
 Johnny

…Now when I project the layer nothing is showing up…The map is blank.  If I project the layer into the same non projection: 
  
 " proj4Projection.InternalProjectionParametersString = "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs";" 
  
 It shows up, but anything else the screen is blank…??? Any ideas? 
  
 Thanks, 
 Kevin 


You need to be aware that when you go from Geodetic (SR-ORG:15) to UTM (EPSG 2955), you also need to change the MapUnit of your map from Decimal Degrees to Meters. Also, the Map is going to be in a completely different coordinate. Can you give us a concrete example you have and I think we can write very quick some sample code to show you how this is accomplished. Thank you.

Thanks Val, 
  
 This is sample code to get this working then Ill  move it over to my production server… Here is the code: 
  
 

if (!Page.IsPostBack)
            {
                string shapePath;
                string shapePathName;
                string shapeFileName;
                shapePath = "~/Nand_Data_ThinkGeo/";
                //shapeFileName = "PSAC_WName.shp";
                shapeFileName = "PSAC_ShapeFile.shp";
                shapePathName = shapePath + shapeFileName;

                Map1.MapUnit = GeographyUnit.DecimalDegree;


                Proj4Projection proj4Projection = new Proj4Projection();
                proj4Projection.InternalProjectionParametersString = "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs";
                proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(2955);
                ShapeFileFeatureLayer PSAC = new ShapeFileFeatureLayer(MapPath(shapePathName));
                ShapeFileFeatureLayer.BuildIndexFile(MapPath(shapePathName));
                PSAC.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColor.SimpleColors.Black), new GeoSolidBrush(GeoColor.FromArgb(150, GeoColor.SimpleColors.PastelGreen)));
                PSAC.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


                PSAC.FeatureSource.Projection = proj4Projection;

                LayerOverlay shapeOverlay = new LayerOverlay("Shape Overlay", false, TileType.MultipleTile);

                shapeOverlay.Layers.Add(PSAC);
                Map1.CustomOverlays.Add(shapeOverlay);

            }  
 
 
  
 Thanks in Advance, 
 Kevin

Hi Kevin, 
  
 Just as Val have mentioned, you need to change the MapUnit to Meter and please check your data is stored in the projection “"+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"; 
  
 Thanks, 
 Johnny