I have a Shapefile but its coordinate system is Unknown, and there is no *.prj file.
How can I identify it now?
There's always the "brute force" method:
Take a layer with a known coordinate system that is supposed to overlay with your unknown layer.
Now make some educated guesses on what projection the unknown layer could be. (UTM, Plate Carree, etc). Project your known coordinate system layer into each projection until you find one that matches the unknown layer as much as possible.
I'm promoting comments by Mapperz and Brandon Copeland by adding an answer that uses their technique.
This technique takes advantage of the fact that ArcMap can convert data to a new coordinate system in-memory. The data-without-a-known-coordsys cannot be converted so it's just displayed. By projecting the known data in-memory, we can see quickly what coordinates it has in the various possible coordinate systems.
Since this question never gets old, I built a site that does the Brute Force method. If you drag a zipped shp+shx onto the map it will map it in every coordinate system available in PostGIS. Assuming you know what "correct" looks like, you can zoom to that area and click on the polygon to get the .prj file from epsg.io.
I really love this web tool: http://projfinder.com/ .
Get some X,Y coordinates from your unkown file, Zoom to approximately the same place on the globe, paste in your coordinates, and let it guess.
At my last job, I had a layer of Geology data (polygon) named "FSU_Geol.shp". My boss gave it to me and asked me to find out a number of things. First off, he was handed this shapefile by the client, and there was no .prj file, so he wanted me to figure that out. He also wanted me to figure out what the categories of Geology were. I could go on-and-on, but let's cut to the chase .... I googled it, and I ended up HERE.
The acronym in the naming convention stood for "surface Geology of the Former Soviet Union", and the Google search led me "directly" to the source (USGS). Everything I could ever need to know about this shapefile was at the top link I hit. I'm not saying that Google can find anything & everything, but I was fresh out of university, and just taking a "shot in the dark", and look at the feedback I got!
In another instance, someone in the office had downloaded a number of shapefiles using a batch function. I don't remember the name of the software package at the moment, but the .prj files were missing. I simply went in to the metadata in ArcCatalog, and I actually found my answer in there. Again, don't quote me, but I think there was a URL to the source in there.
Ever since that day, I "start" with a google search if there's no clue in the metadata!
There are two great links from Esri that go into detail on this:
Ask the producer.
If you know common CRS for your geographic region, you can try some of them. But asking is better.
Not a tool (I don't know of one in existence that would let you do that), but check out @mkennedy's reply to How would I convert this point to WKID 4326?. She explains how she arrived at the correct spatial reference. SpatialReference.org and patience will be your friends.
Additionally, Esri provides a guide on how to guess a coordinate system (though I prefer mkennedy's method if you know a bit more about the data).
The best answer I've found to this question is non-technical: find out where your data came from. Agencies and organizations tend to be consistent with their use of projections. Know it came from your state DOT? Look at the rest of their data and see what it tells you. Don't know where it came from? An educated guess is just as likely to send you down the right road.
At least it makes tackling the problem with brute force a little more do-able!
Seriously outdated at this point, but Werner Flacke and Birgit Klaus posted Find Projection on ArcScripts in 2007. I don't think the source code is there, unfortunately. It's VBA-based so only usable in ArcGIS Desktop v9.2 and possibly 9.3. It does include two shapefiles with the areas of interest from the EPSG Geodetic Parameter Dataset which could be used to narrow the possibilities.
Blue Marble Geographic Calculator and Geographic Transformer have coordinate system recovery tools.
To add to the other responses in this post, I would add the following:
How To: Identify an unknown projected coordinate system using ArcMap
Provide a specific check on NAD1927
If the coordinates are in decimal degrees, such as between longitude -180 and +180, and latitude -90 and +90, identify the Geographic Coordinate System (datum) used for the data. Prior to version 9.2, ArcMap assigns GCS_Assumed_Geographic_1 to the data, by default. This places the data on the NAD_1927 datum
In addition
If the data is in the United States and shows an extent in which the coordinates to the left of the decimal are 6, 7 or 8 digits, the data is probably projected to the State Plane or UTM coordinate systems.
FAQ: Projection Basics: What the GIS professional needs to know
This page provides several checks on determining projections which is important in assisting in trying to identify an unknown coordinate system.
The following concepts are fundamental to understanding the use of map projections in ArcGIS. Please note though that the topic of projections is extremely broad, and this article can do no more than touch on a few important topics.
Coordinate systems, also known as map projections, are arbitrary designations for spatial data. Their purpose is to provide a common basis for communication about a particular place or area on the earth's surface. The most critical issue in dealing with map projections is knowing what the projection is and having the correct coordinate system information associated with a dataset.
When the first map projections were devised, it was assumed, incorrectly, that the earth was flat. Later the assumption was revised, and the earth was assumed to be a perfect sphere. In the 18th century, people began to realize that the earth was not perfectly round. This was the beginning of the concept of the cartographic spheroid.
To more accurately represent locations on the earth's surface, map makers studied the shape of the earth (geodesy) and created the concept of the spheroid. Then geographic coordinate systems (GCS) were devised, which include a datum, units of measure, and a prime meridian. A datum links a spheroid to a particular portion of the earth's surface. Recent datums are designed to fit the entire earth's surface well.
The most commonly used datums in North America are:
• NAD 1927 (North American Datum 1927) using the Clarke 1866 spheroid
• NAD 1983 (North American Datum 1983) using the GRS 1980 spheroid
• WGS 1984 (World Geodetic Survey 1984) using the WGS 1984 spheroidNewer spheroids are developed from satellite measurements and are more accurate than those developed by Clarke in 1866. The terms 'geographic coordinate system' and 'datum' are used interchangeably, but as noted above, a GCS includes a datum, spheroid, units of measure and a prime meridian.
- The coordinates for data change depending on the datum and spheroid on which those coordinates are based, even if they are using the same map projection and parameters.
For example, the geographic coordinates below are for a single point located within the city of Bellingham, Washington, using 3 different datums:
Code: DATUM X-Coordinate Y-Coordinate NAD_1927 -122.466903686523 48.7440490722656 NAD_1983 -122.46818353793 48.7438798543649 WGS_1984 -122.46818353793 48.7438798534299
- A principle of good data management is to obtain the projection parameters from the data source providing the data. Do not make an educated guess about the projection of data, because an inaccurate GIS database will be the result. The necessary parameters are the following:
• Projection
• Units of measure
• ZONE (for UTM)
• FIPS zone (for State Plane)
• DatumOther parameters may be required, depending on the projection. For example, Albers and Lambert projections require the following parameters:
• 1st standard parallel, in degrees, minutes and seconds (DMS)
• 2nd standard parallel (DMS)
• Central meridian (DMS)
• Latitude of projections origin (DMS)
• False easting and units of measure
• False northing and units of measure
• X-shift and units of measure
• Y-shift and units of measure
Try the ogrinfo program supplied as part of GDAL.
See How to access Shapefile metadata using OGR?
So ogrinfo might not give you the projection information without a .prj file, but it is still a useful tool to help you investigate the list of potential projections.
For example:
Geometry: Polygon
Feature Count: 269
Extent: (320000.000000, 505000.000000) - (323000.000000, 511000.000000)
This response suggests to me the shapefile is using a reference system based on meters and not on degrees.
Assuming you know where the data is roughly from, you now have a shorter list of possible projections.
Other best practices might be to:
It is probably better to start from some position of knowns, rather than try and brute force from scratch.
Look at this website:
http://www.egger-gis.at/shapefile-projectionfinder/
I am the developer of this free tool. Maybe this tool can help you to find and define the correct projection of your shapefile. It is basing on the idea of http://projfinder.com/ by Aaron Racicot.
You can aslo try this special solutions for:
Austria (German): https://www.data.gv.at/anwendungen/checkaustrianprojection/
Australia: https://maegger.github.io/map_australia.html
UTM - Zones: https://maegger.github.io/map_utm.html
I had the same problem while I was working on my project (DEMs). One of the DEM was unknown coordinates and cannot be projected, so I did the 'georeferencing' utilizing of Georeferencing tool in ArcMap. After Georeferencing, you'll get your prj.file.
You could discriminate between geographical and cartography coordinate, the first lat/lon are in degree the second North/East are in meters If the file are shape you could dump the coordinates of the geometry with shapelib-1.3.0 and see the values then ...
You can do it with Fiona.
import fiona as f
a = fiona.open("C:\QGIS_ShapeFile\qgis\shafile_XXX.shp")
print(a.crs)
You will get answer as
{'init': 'epsg:4326'}