ThinkGeo.com    |     Documentation    |     Premium Support

Converting Shape from One Projection to Another Projection

 I have created a shape file with Thinkgeo using Lat/Lon Projections. And Now I want to convert it to UTM 17 Projection.  


What am I doing wrong ?


Plus I would like to Create a Projection file.


 


Dim DefaultShapePath As String = "C:\WestVirginia\"


Dim ShapeFileRoad As String = "BRAXTON_StreetOld"


 


Dim ShapeFileRoadNew As String = "BRAXTON_Street"
 
Dim utm17Projection As Proj4Projection = New Proj4Projection
utm17Projection.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(3747)
utm17Projection.ExternalProjectionParametersString = "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"
 
ShapeFileFeatureLayer.SaveToProjection(DefaultShapePath & ShapeFileRoad & ".shp", DefaultShapePath & ShapeFileRoadNew & ".shp", utm17Projection, OverwriteMode.Overwrite)
 
ShapeFileFeatureLayer.SaveToProjection(DefaultShapePath & ShapeFileAddress & ".shp", DefaultShapePath & ShapeFileAddressNew & ".shp", utm17Projection, OverwriteMode.Overwrite)
 
Please Help

TIM, 
  
 Thanks for your sample code that will be more helpful. 
  
 As understand from your code, you want to convert EPSG:3747 projection to another projection which is GRS80/ NAD83, but as your description, you want to convert from Lat/Lon to UTM17, so I think the InternalProjection you need to set EPSG:4326 
  
 Let me know if I misunderstand. 
 Thanks 
 James

 Hello,


I have attached some sample shape files which I would like to convert from Decimal Degrees to UTM 17.  I have gone through the sample code but, seem to be missing something because the resulting shape files are not in the anticipated UTM 17 projection.  Please send me some sample code that will convert the included shape files from Decimal Degrees to UTM 17 projection.


Thanks,


Tim Clothier



BRAXTON_SiteOld.zip (485 KB)
BRAXTON_SiteOld2.zip (281 KB)

TIM, 
  
 Your code is right at least I will do the same way, the only problem is that you may choose the wrong number of EPSG. And also your attached packages are not correct. The first one is missing .dbf file, the second one is missing .idx and .ids files. 
  
 Thanks 
 James

Yes put the two files together will make a complete shape file. When I run the my code it converts but it is not correct. I use global mapper to check my shape files. And the files are not in UTM 17. What could be wrong

TIM, 
  
 Where do you get your parameter string? I find the parameter string the UTM 17 North with WGS84 datum is "+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs", could you try this one and I think the result should be UTM 17. 
  
 Thanks 
 James

Thank You That was the problem. 


TIM, 
  
 I am glad that you found the problem, there are a group of FAQs talking about projection in our Wiki, you can get more familiar with our MapSuite 
 wiki.thinkgeo.com/wiki/Map_Suite_Services_Edition_FAQ_Projection 
  
 Just let me know if you have more questions. 
  
 James

Where can I find a copy of the State plane GetEsriParametersString codes to use. And GetEpsgParametersString codes.

TIM, 
  
 Thanks for your post and questions. 
  
 I think the codes for these APIs are part of our service edition, I am not sure you can get it, you can try to contact our support (support@thinkgeo.com) to see if it is possible. While basically what it does is to fetch the information out from the projection documents attached in the products. 
  
 Any more questions or concerns please do not hesitate to let me know. 
  
 Thanks. 
  
 Yale 


I am trying to convert to state plane Fl North and can not find the datum to Use. Can you please help 


TIM,


Thanks for your post and questions.
 
Did you have a try to look at the projection documentations on the following folder?
C:\Program Files (x86)\ThinkGeo\Map Suite Desktop Evaluation Edition 4.0\Documentation\Projections
 
I am not quite sure about the question you are mentioning, probably because I am not an expert in projection. I will try to get some help from our expert on this. Any feedback will let you know.
 
Thanks.
 
Yale

If you want to project your data to State Plane, you don't need to worry about the datum. You just need to know in what State Plane Zone, your county belongs to. I believe Braxton county, West Virginia belongs to StatePlane West Virginia North FIPS 4701.


spatialreference.org/ref...ext=Search


So, if you want to have in meters, you will use the ESRI Spatial Reference, 102350, if you want to use feet, you will use the ESRI Spatial Reference, 102750.


 See below the code I use to display your shapefile in State Plane Meters:


 



    winformsMap1.MapUnit = GeographyUnit.Meter;
    winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);

    ManagedProj4Projection proj1 = new ManagedProj4Projection();
    proj1.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326); //Geodetic Lat/Long
    proj1.ExternalProjectionParameters = ManagedProj4Projection.GetEsriParameters(102350); //State Plane West Virginia North Meters 

    ShapeFileFeatureLayer testLayer = new ShapeFileFeatureLayer(@"../../data/braxton_siteold.shp");
    testLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.SimpleColors.Red, 10);
    testLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
    testLayer.FeatureSource.Projection = proj1;

    LayerOverlay layerOverlay = new LayerOverlay();
    layerOverlay.Layers.Add(testLayer);
  
    winformsMap1.Overlays.Add(layerOverlay);

    testLayer.Open();
    winformsMap1.CurrentExtent = testLayer.GetBoundingBox();
    testLayer.Close();

    winformsMap1.Refresh();