Converting latitude/longitude to Alberta 10 TM Projection - gis

I need to convert latitude/longitude coordinates into Easting/Northing coordinates in the Alberta 10 TM Projection.
The 10 TM projection is similar to UTM, but it is a custom projection for the province of Alberta, Canada. I think (with some effort) I could code it myself but would rather not reinvent the wheel if it's been done already.

Grab PROJ Cartographic Projections library - open source library.
Suggested parameters for 10TM:
+proj=tmerc +lon_0=-115 +k_0=0.9992 +x_0=500000 +datum=NAD27
According to this post you may need to:
change the ellps to GRS80 if your 10TM
data is referenced to the NAD83 datum
(instead of NAD27/clrk66). You may
also need to change the false northing
(y_0) to be -5000000 if your 10TM
coordinates for Alberta are less than
5,000,000 (an AltaLIS "standard").
I should mention that proj.4 is the library to get for any kind of geographic coordinate system transformation. There's pretty much no transformation it can't do.
I also recommend reading Map Projections-A Working Manual (Paperback) by John Snyder if you are into these kinds of things.. it's a classic. :) (fixed the link)

I've used GDAL (http://www.gdal.org) to do this. It supports bindings for many different languages as well.

For free GIS libraries, take a look here: http://www.freegis.org/database/?cat=12. Hopefully you can find something that fits your needs.

I would seriously consider using a third party dll to do this rather than code it yourself.
I don't know the full details of the 10 TM projection, but I worked on a project that required coordinate conversions between many different coordinate systems to a high degree of accuracy, including UTM and Lat/Long. We found that the maths involved was way too complicated.
Perhaps take a look at the open source PROJ.4:
http://trac.osgeo.org/proj/
They seems to support a huge range of conversions, and so I hope Alberta 10 TM will be covered.

Download the opensource GIS application MapWindow
Open the GIS Tools menu
And use their shapefile reprojection tool. Under "National Grids Canada" you can select this Alberta projection.
-Jeff Tiemann
jefftiemann#gmail.com

You can also use http://code.google.com/p/android-openmap-framework/ which can convert an Android Location to a LatLonPoint, UTMPoint, or MGRSPoint.

You can insert your coordinates pairs to Coordinate System Transformation - online service where you can set appropriate input and desired output coordinate system. There are hundreds of coordinate systems - it is possible to simply find appropriate coordinate system using any keyword. You can see editable proj4 text definition for each coordinate system so if you need to modify any projection parametr, you can do it there. Or you can define your own custom projection...

Related

Land Cover Dataset

I'm interested in implementing some data visualizations as map layers. But I'm interested in generating data layers only above land area (land cover). A good example would be to plot population density over a coastal city. What is a good approach for this, when it comes to the data source and how to actually display layers with such detailed boundaries?
Technically, so far I'm using Leaflet.js and tiles based on OpenStreetMaps, but the question is not necessary technology specific. Also, I'm not interested in plotting this for the whole planet, but for areas of a few hundreds square kilometers (for e.g. a coastal city).
To better give an idea of what I'm interested in, this Koordinates map is something that is similar to what I'm interested in. However, I need something a bit more detailed on the borders.
Usually you need a desktop or server based GIS such coverage, but not JS to do the processing on the client side.
How you do the mapping (here: linking statistical data and land areas) depends on your data itself. You can load OSM based shape files into QGIS and do some python scripting or using the PostGIS commands to link your data and choose a map style.
Another idea would be http://geocommons.com that allow easy visualization if you upload CSV files.
Depending on your area of interest, you can obtain some highly detailed shapefiles from numerous sources. Especially if the local area provides GIS data to the public (many larger coastal cities do, e.g. New York, London). From there, you can create a GeoJSON text of the geometries (here's a free tool for that). Parsing the JSON is very simple and it's very easy to add it to leaflet maps. You can even get creative and add more keys to each geometry object with the data you want to visualize.

Choosing between projection systems

I'm a Python/Django developer who is new to GeoDjango (and GIS, in general). I was hoping someone could provide some guidance with respect to the different projection systems offered by the City of Toronto.
The City of Toronto is great with publishing Open Data. Here's a link to their Open Data repository.
All shapefiles are available in both "MTM 3 Degree Zone 10, NAD27" as well as "WGS84" formats. GeoDjango is able to import both formats. What are the consequences of choosing to import data from one format as opposed to another? What factors should I consider when deciding?
Depends on how you are using the data. If you are layering it on top of other datasets, choose a common coordinate system for all datasets so that your mapping framework doesn't have to reproject the data every time a map is drawn. WGS84 is a very popular coordinate system, and would be a good choice for mixing with other data.
If you are just using it to generate maps in the Toronto area, MTM 3 Degree Zone 10 is probably your best bet, as WGS84 will introduce slight distortions when drawing a map on the screen, although casual (and probably advanced) map users will be unlikely to notice it.

How do I discern a country from X/Y Coordinates (or Long/Lat)?

I have a number of XY coordinates and am looking to discern which country each of these are in, who knows a good service/way of doing this?
I am working with MySQL & PHP, not that its really relevant, I am o fey with consuming web services/pages and assume there must be a web-service/page somewhere which will do this, if someone can point me in the right direction that would be awesome.
How do I take: 306458,383136 and turn it into: United Kingdom (for example.)
Appreciate your responses in advance.
What you're looking for is called reverse geocoding, and e.g. Google Maps has this functionality: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
It works from a Lat/Lon coordinate, and could return even a more precise information than only a country; note that this is only an estimate - in some places, country boundaries are somewhat tangled.
If you're looking to do this offline, or if Google's/Bing's/whoever's licensing is too strict for you (e.g. you need to do a gazillion of requests per day, or need to present the result in an unorthodox format), it's possible to run your own instance of Nominatim, feed it a data extract from OpenStreetMap (under ODbL, a much more permissive license), and query that.
For example, there's a set of boundaries available at https://wambachers-osm.website/boundaries/ - just the national boundaries, so you wouldn't need to download the entire planet map.

Obtain vector of lat/long pairs of political boundries from GIS database

I have an application that draws a vector map of the 50 United States. Each state is a polygon. These polygons change color as the state of the application changes.
I obtained the coordinates I'm using now by laboriously tracing a scanned in map with a mouse, recording the screen coordinates as I did so. As you can imagine my vector map is pretty ragged. I'd like improve the appearance of my maps by using real boundary coordinates for each state, and in the future use other political boundaries in my app such as counties or congressional districts.
I know nothing about GIS systems, nothing at all. I do think that given a vector of lat/long pairs for the borders of each political entity I could convert the lat/longs into screen coordinates. I used to be an Air Force navigator, so I'm comfortable with lat/long calculations.
Bottom line: I need an open source or public GIS database system that could spit out a list of Lat/Long pairs for the boundaries of the fifty States.
Can someone provide a pointer to such a database and hopefully a tutorial of some kind describing how to extract political boundary information from it?
Thanks in advance!
The Census Bureau provides the TIGER data sets that include shapefiles for state outlines (and much, much, more). The downloads are in ESRI Shapefile format, which can be opened by most GIS applications, such as the easy to use open-source QuantumGIS. To convert the shapefiles to a format that's easier to work with, see this question. Once you've got the vector data into your program, you'll probably realize that it's more detailed than you want. Check gis.stackexchange.com for some tools to simplify the polygon outlines. Once you've got the sets of points you want, you may want to use the PROJ library to handle the projection of the points on to your map.

How can I take numerous shapefiles and have them line up in GIS?

I am trying to take a shapefile of subdivisions within a county that I have created and line it up with another shapefile that was given to me by the County Appraisal District (parcel data). When I try to get them to line up then my streets shapefiles is not aligned with everything else. They are all on the same coordinate system and I do not want to have to recreate the shapefile for the subdivisions. Any thoughts?
This is a question with answers that may be simple or may be very complex, depending on your situation. As a GIS developer, I've most commonly seen this as a symptom of an incorrectly defined coordinate system. However, whether this is the case or not, and what the solution is strongly depends on your environment. From here on, I'll assume that you're working in an ESRI package...
I agree with the other posters that your problem is one of mismatching projections and/or datum definitions.
The most important thing to understand as regards projections in ESRI software is this:
Manually setting the projection of a dataset (shapefile, geodatabase feature class, etc) in ArcCatalog does NOT reproject that dataset!!!
In order to reproject your data, you must EXPORT the data from an ArcMap session in which you've been working and where the data is obviously lined up correctly. During the EXPORT, you are given the choice of saving your data with the coordinate system of the underlying map or that of the original dataset.
Your best bet is to follow these steps to create a new dataset with the correct projection and then extrapolate what you need to do to fix your specific problem:
Create a new ArcMap session and set its coordinate system:
Do this in a fresh ArcMap session with NO OTHER DATA. Be sure to explicitly set the coordinate system of the ArcMap mapview to your desired coordinate system (I recommend the one that matches the data you're trying to overlay, or one from another well-established dataset).
Add one other dataset with a known good coordinate system.
Create your new dataset in this ArcMap session. Give your new data the same coordinate system as the ArcMap mapview and the one other dataset in the map. Set the XY domain of the new data to exceed the area defined by your other dataset, but don't go beyond the size that will reduce your desired spatial resolution.
Create your data. It can be any data at this point. Some lines, some polygons, etc. Save your work.
Export your new dataset. When prompted, choose to save with the coordinate system of the underlying mapview.
Create a new ArcMap session and add your new dataset. Then add your parcel dataset. They should now occupy the same space in your map window.
Edit your new data to your heart's content.
Some probable issues if this doesn't help:
You didn't follow these steps correctly - check the ESRI documentation; this is a well documented issue.
The parcel data you're trying to match doesn't have properly defined coordinate system. It's always possible that the keepers of this data don't know what they're doing and have munged it up. I've seen this problem more times that I care to admit.
You've matched the projection but have mis-matched the datum. Many municipalities are still using data in NAD27, which is way out of date. Some have moved to the modern NAD83. The difference can be up to 300 meters, depending on where in the country you are. Also, data that originates from surveying or GPS equipment is usually collected in WGS84 (the typical default for satellite surveying), which is for all practical purposes the same as NAD83, at least at mapping scale resolutions.
Try researching these issues and see how it goes. I'll say it again:
Manually setting the projection does NOT actually project that data!!
Good luck!
Your problem is probably one of projection
| projection: character string that names a map projection to use. See
| 'mapproject' (in the 'mapproj' library). The default is to
| use a rectangular projection with the aspect ratio chosen so
| that longitude and latitude scales are equivalent at the
| center of the picture.
`-----
Agree that your problem is projection. Is there a .prj file extension associated with either of your files? If not key first is finding out what projects you have. I would guess State Plane of some sort if you are dealing with U.S. centric local data from a local government.
Cadastral tools (surveyer tools) usually let you specify a handful of control points and will then "warp" the data to fit to your control points. This can be anything from a simple shift to something more complex. If everything is shifted by a few feet, you can also just use your "editor" to select all shapefiles and then move them however many feet necessary.
If you've verified that both shapefiles are using the same coordinate system, then projection is less likely to be the problem. It's fairly common for parcel data to be "offset" from other data sources (such as roads). This comes from inconsistent collection methods and points of reference.
Another source of error can be that one of the shapefiles has the wrong coordinate system specified. For example, if the roads were actually WGS 1984, but it's prj is set to NAD1983, you will see some significant errors. This usually happens if you had to manually set the coodinate system for a shapefile (i.e. it didn't include a PRJ and you created one).