Elijah Robison   |  elrobis [ a t ] h o t m a i l   |  Résumé (PDF)   |  LinkedIn   |  O'Reilly Media   |  GIS.SE   |  @elrobis  
Learning Flex 4 on Amazon..
(O'Reilly Media, November 2010)

GIS Blog: Cartometric.com/blog

Tuesday March 17, 2015:
Socket-served Internet mapping, anyone?
I may or may not be on to something. For awhile I’ve been growing more and more tired of the typical Internet mapping user experience. It’s basically this: open a map and zoom/pan somewhere, wait a moment while (hopefully) some “working” graphic gives you a clue that the map hasn’t forgot about you; meanwhile, some basemap tiles load, then after a moment or two, “poof!” all the interactive data (i.e. the sole reason you are using that particular map) appears all at once. Fortunately, in most cases, the basemap tiles “sprinkle in” one by one as they become available, which does give the user an impression that something is happening. But more often than not, basemap tiles [...]

Saturday March 07, 2015:
Q: What’s The best way to convert CDs to MP3s in Windows? A: VLC and the Command Line. Here I’ll show ya..
Today my friend (shout out to Nic Zamora) wanted to know if I still had a recording we made of a song he co-wrote way back in ancient history ..like 2007 or something. Gah.. Well it got me to thinking—my other buddy (shout out to Corey Nolan) had a similar request awhile back for a recording we did with his brother, Dustin, around the same time. The problem was, the only recording I had of the latter was on CD. Since then, that one simple deterrent—being on CD—was solely responsible for preventing me from ever “getting around to it”, like I said I would. The reason I hate ripping CDs is because it’s such a ridiculous process ..first you have to open some asinine software (and God help you if it’s Windows Media Player), click around like a fool, be confused, drag files and/or locate folders, agonize over a variety of settings, many of which you, A) may not know anything about, 2) remember from the last time you did this resulting in inconsistently ripped music, and D) ..worst of all, potentially but unintentionally introduce some weak-sauce copy protection. [...]

Thursday January 22, 2015:
Gabriel Weinberg’s PostgreSQL Tips and Tricks
Here’s a solid article on tuning your PostgreSQL instance and optimizing your indexes. Also, here’s a nice primer on creating and managing indexes in PostgreSQL. I wanted to share ‘em now and save ‘em for later. /E

Tuesday November 25, 2014:
ArcPy CalculateField_management Complex Python Expression to Return a String
My coworker was having some trouble implementing a CalculateField expression in Python so I wanted to document the solution for anyone with a similar issue. (Note: If you  just want the answer, see the What ultimately worked.. heading, below.) Being unfamiliar with ArcPy, I was intrigued by this idea of defining a function as a string value, then passing that string as a variable into another function. I can see how that opens a powerful door—but it also strikes me as ultra weird, and because Python has some very particular spacing/indentation rules (as compared to say, JavaScript), I figured this technique would be ultra-prone to syntax issues ..and thus could be especially difficult to troubleshoot. So in this case, I also wanted to demonstrate how I ultimately thought through the problem. [...]

Friday September 26, 2014:
Create UTFGrid Tiles from PostGIS Tables
I assume you’re where I was about a week ago. That is, you’ve heard of UTFGrid, and now you want to render your own UTFGrid tiles. Perhaps you found yourself looking at this thread over at GIS.SE, but you don’t want to jump into TileStache just now. Anyway if you’ve got a working installation of GDAL/OGR and Mapnik 2+, complete with Python bindings, I’ll show you what worked for me.. Because this is merely an adaptation of Matthew Perry’s original solution, I highly recommend considering his original blog entry on the topic, complete with discussion points and caveats, before proceeding further! [...]

Wednesday September 24, 2014:
OGR VRT: Connect to PostGIS DataSource
I needed an OGR VRT for something and didn’t find a clear example on the web all in one place, so here goes. Somewhere on your system, create a new file with a .ovf extension. Inside that file, add some XML like the following to define your PostgreSQL connection:
That name=”WKTGrid” is semantically unrelated here. I have been experimenting with including WKT geometry data in UtfGrid tiles, and that name is relative to my experiments. You can provide most any value for name. However, do note that the layer name is referenced in the ogrinfo command.

    PG:host= user=postgres dbname=gis password=l00per
    SELECT tms, owner_name, the_wkt FROM parcels_cama_20140829_pmerc

Monday September 22, 2014:
MySQL Implementation of Google’s Encoded Polyline Algorithm
I just noticed someone created a MySQL implementation of Google’s Encoded Polyline Algorithm incorporating some elements of my PostgreSQL/PostGIS approach, specifically, support for multi-part, multi-ring polygon geometries. And this is exciting, at the bottom of his post, Fabien says he’s working on a solution for consuming the Google encoded geometries in Leaflet. Nice! I love open source software! I thought I’d mention the MySQL approach here to help expose Fabien’s solution to English searches and drive a little more traffic to his site. If you can’t read French, Google Translate is your friend! [...]

Friday June 06, 2014:
Convert Google Maps Polygon (API V3) to Well Known Text (WKT) Geometry Expression
There’s dozens of reasons why you might want the Well Known Text (WKT) geometry expression for a Google Maps Polygon object. Assuming you’re using the Google Maps API V3, and you’ve got a variable referencing your Polygon, I’ll suggest two approaches you can take to iterate over the paths and vertices in your Google Maps polygon and return the geometry expression as a Well Known Text string. Add a Simple Utility Method to Your Project Easy enough. Just add the following method to your project. Look below the method for an example of how you’d call it. function GMapPolygonToWKT(poly) { [...]

Monday January 27, 2014:
PostGREsql/PostGIS Implementation of Google’s Encoded Polyline Algorithm
[Edit 30 Jan, 2014] I added an additional PostGREsql method to perform Polygon encoding by concatenating polygon geometries (delimiter: †) and their inner rings (delimiter: ‡) together into one massive encoded block of ring features. I also provided an example JavaScript method demonstrating how to bring the amalgamated polygon feature encodings into your Google Map. By some uncanny twist of the fates, I’ve elected to use, had to use, and/or been asked to develop applications that use Google Maps ASCII Encoded Polyline expressions. In previous encounters, I’ve used a PHP class to handle the encoding task, and most recently I wrote a [...]

Friday November 08, 2013:
PostGIS: query all multipolygon parcels with at least one hole
I was writing some code to iterate over Well Known Text expressions for polygon features, and I decided I needed to test the most complex edge-case I could think of–multipolygon geometries where at least one of the bound polygons has a hole (i.e. an interior ring). I ended up with the following query. This seems like the kind of thing I’ll want to reuse later, so I’m noting it here. For good measure, I also use a rudimentary technique to sort the output with the most complicated geometries in the table at the top of the list. Basically, the more “text” it takes to describe the geometry using Well Known Text, the larger and more complex I figure it must be! [...]

Monday August 05, 2013:
Install httplib2 to your Preferred Python Runtime after ArcGIS Unceremoniously Hijacks the First Attempt
We’re going to use Google Maps Engine for some stuff, and so I thought I’d throw my first codes at it using Python. Well.. Google’s Python example requires the httplib2 library, so I needed to install that. When I did—following the library’s download/instructions—for some reason, the library went into service against ArcGIS’s embedded Python runtime, rather than my favored 2.7 instance, which I use for every single thing. ::grimaces:: To fix this, I just ensured the new library’s setup.py script was called from my preferred Python runtime rather than let Windows, or some black magic, decide which instance it should integrate with httplib2. [...]

Friday December 28, 2012:
osm2pgsql help and usage
I wanted a more convenient place to read the osm2pgsql help output, so this seemed as good a place as any for it. /E
osm2pgsql -h
osm2pgsql SVN version 0.80.0 (32bit id space)
        osm2pgsql [options] planet.osm
        osm2pgsql [options] planet.osm.{gz,bz2}
        osm2pgsql [options] file1.osm file2.osm file3.osm
This will import the data from the OSM file(s) into a PostgreSQL database
suitable for use by the Mapnik renderer
   -a|--append          Add the OSM file into the database without removing
                        existing data.
   -b|--bbox            Apply a bounding box filter on the imported data
                        Must be specified as: minlon,minlat,maxlon,maxlat
                        e.g. --bbox -0.5,51.25,0.5,51.75
   -c|--create          Remove existing data from the database. This is the
                        default if --append is not specified.
   -d [...]

Friday December 21, 2012:
Resident “lunatic” of LinkedIn
Just updated my LinkedIn profile.. This is just TOO FUNNY right now! [image] I totally had to save this for posterity. Unfortunately it will probably disappear before you can say “Jack Robinson”. [image]

Tuesday December 18, 2012:
mapnik rundemo.exe error: run from within the demo/c++ folder?
So I just installed the mapnik 2.0.1 binaries for Windows, and I ran into a “gotcha.” I couldn’t figure this out by Googling, so hopefully this post will help someone.  (Be sure to note the embarrassing conclusion.) Specifically, following a fresh mapnik install, rundemo.exe told me this:
C:\mapnik-2.0.1rc0\demo\c++>rundemo.exe usage: ./rundemo Usually /usr/local/lib/mapnik Warning: ./rundemo looks for data in ../data/,Therefore must be run from within the demo/c++ folder.
Note the first bit:  usage: ./rundemo   Well ok, that’s fine. Except this didn’t work, either: [...]

Tuesday December 18, 2012:
osm2pgsql and windows errors: failed to start MSVCR90.dll, Connection to database failed, etc..
I’m following the BostonGIS tutorial(s) to learn how to setup an OpenStreetMap tile server on Windows (XP 32, cos’ that’s what’s on the desk), and I’m running into headache after headache. So this post notes the gotcha’s I’m encountering and how I’m fixing them (optimistically assuming I fix all of them). “Thar be dragons..” [image] ————————————————— Part I: “Failed to start MSVCR90.dll” First, as recommended I tried using the HOTOSM installer, but when I launch it using the example command provided on the BostonGIS site, I got the error above. I’d logged out/in, rebooted, [...]

Saturday October 20, 2012:
Decode Google Map encoded points as Well Known Text (WKT) with Python
I had close encounter of the 5th kind yesterday.. here’s the gist.. It started when someone “gave” me a GIS dataset (..of polygons, kind of..) that a colleague of theirs, way back in ancient history, chose to pre-cook as ASCII-encoded point pairs. Their intention was almost certainly to use the pre-cooked data in Google Maps. Anyway, being arguably sane, I wanted to return this data to a more GIS-normal format so I could put it in a database like MySQL or Post and use it for other stuff. I considered a few different approaches to this problem, including creating a Google Map that could load-in all of the polygons from their encodings, then iterate over the polygons, interrogate the polygon point pairs, and finally concatenate WKT features from the points and save the geofeatures into a MySQL table. This approach offered the advantage of using Google’s existing Maps API to do the decoding for me. But let’s face it, that’s lame, uninspired, and not inventive.. it wasn’t even interesting. [...]

Sunday January 22, 2012:
PostGIS: count all features of each GeometryType in a spatial table
Sometimes, just when you think you’ve got something figured out –you get reminded that you really don’t.  :/ As you may know, ESRI allows for single and muli-part geometries to live in the same FeatureClass. So, if I have a shapefile of roads, there might be both LINESTRING and MULTILINESTRING features in that dataset. I live just loose-enough not to care about that. But I do need to be aware of it when I’m cobbling data in PostGIS. In thise case, I was getting a PostGIS error tying to do a Dissolve-By-SQL, so I thought why not get a quick count of each GeometryType in the dataset? Maybe I was running into issues single and multi-part geometries were blurred together. It took me an embarassing chunk of time to get this right, so I figured I’d post the recipe  in case I needed a reminder later. [...]

Saturday November 19, 2011:
Prepare a Shapefile for OpenScales using ogr2ogr and PostGREsql
This post explains how to import GIS data (a shapefile, in this case) into a database (PostGREsql) so it can be consumed by most any mapping API. I have OpenScales in mind, but this approach will support any mapping app with functions for rendering feature overlays using geodetic coordinates (i.e Longitude and Latitude). In many cases, you’ll need to translate your feature data out of a projected/cartesian system and into a geodetic/spherical system; so I’ll include a demonstration of that.

Quick and Dirty Summary

This approach has two parts. First, we’ll use GDAL’s ogr2ogr utility to import a shapefile into our database. Second, we’ll use a few SQL commands to translate our data from a projected to a geodetic system, as well as optimize the table for fast query speeds. [...]

Friday November 18, 2011:
ogr2ogr: Export Well Known Text (WKT) for one feature to a CSV file
Perhaps you’re looking for this?
ogr2ogr -f “CSV” “E:\4_GIS\NorthArkCartoData\UnitedStates\MO_wkt” “E:\4_GIS\NorthArkCartoData\UnitedStates\USStates.shp” -sql ” SELECT * FROM usstates WHERE STATE_NAME = ‘Missouri’ ” -lco “GEOMETRY=AS_WKT ” -lco “LINEFORMAT=CRLF” -lco “SEPARATOR=SEMICOLON”
My buddy at work needed a way to get the WKT geometry definition for a single feature in a shapefile. I thought, “surely this is something we can do with OGR?” Lo’ and behold, yes it was. [image] The script above uses OGR SQL to interrogate a shapefile for one lone feature and, when it’s found, exports the record to a comma separated values (CSV) file (or in this case, a semicolon delimited file). Here’s a quick break down: [...]

Sunday November 06, 2011:
OpenScales: Coordinate Transformation from Uncommon Projections
———— UPDATE 2.19.2013: It turns out you don’t have to rebuild OpenScales to apply uncommon projections, you can just assign the projection directly to ProjProjection.defs. (See Simon L.’s answer here in the OpenScales user group.) So if I modify my example toward the bottom of the post (at #5), here is how I would apply the alternate, and arguably better, approach. (Fair warning, I haven’t compiled this and tested it yet, the only difference is the first line), but this is how I expect it should be. If it doesn’t work like this, it’s likely ‘cos an instance of ProjProjection needs to be created first, and the defs property of the instance needs to be appended. In other words, if this doesn’t work, follow the line instantiating moNADProj with moNADProj.defs['EPSG:102697'] = “+title…. blah blah”; One of these days I’ll make super-sure this is correct. But I didn’t want to forget where I found this, hence updating the post.) [...]

Saturday November 05, 2011:
Nikon Coolpix 3100 Near Infrared Hack
While this post is not in-theme with the stated goals of the blog, I wanted to save my notes somewhere as well as make a URL to show-off for my friends. On the other hand, I’m opimistic my experiment will enable some “eco-minded research”, so perhaps there’s still a loose tether linking this back to the GIS community.. Basically, I hacked my old, 3 megapixel Nikon Coolpix 3100 today so that I could take NIR (near infrared) pictures. The following images serve as a storyboard for the process. 0:  The tools and materials involved include (clockwise from bottom-left) —-> small round-nose pliers (my wife uses these for beading) [...]

Tuesday October 18, 2011:
Install GDAL on Windows
Later posts on this blog will assume a working install of GDAL/OGR, so it’s prudent that I first demonstrate how to get a fresh cut of GDAL/OGR up-and-running on a Windows system. Windows users have a few options for installing GDAL (see this question at gis.stackexchange,which will point you to Christoph Gohlke’s binaries –scroll down to GDAL, and the OSGeo4W Installer, among other approaches). However, I’ll guide you through what works for me, which can be summarized as follows: 1) Install Python 2) Install the GDAL binaries published by Tamas Szekeres 3) Append your environment Path variable [...]

Sunday October 16, 2011:
Google Maps for Flash/Flex: Dead Man Walking
“When life gives you lemons..” Let’s just review the signs:
  • First, the Google Maps Flash/Flex API had not been updated for quite some time.
  • Meanwhile, some developers were sharing a hack to bypass a nasty initialization bottleneck in the Maps Flash/Flex API that stalled map loading in AIR apps.
  • At the other end of the yard, Google lifted its registration key requirement for the Maps JavaScript API V3; yet, the Flash/Flex counterpart remained unchanged in this respect (curiously, it was key-hashing that caused AIR apps to stall).
  • Finally, and though unrelated, Pamela Fox, one of the higher-profile support engineers attached to Maps developer relations, left Google for other pursuits. [...]

Answers at gis.stackexchange.com

Density Mapping with mapnik
Way late to the party here, but if I were in your situation, I'd create a new table in the database and write a script to iterate over your existing points, and for each point, create N representative records corresponding to your total_count property for that parent-record. If you want to take it a small step farther, for each child-record, I'd offset its lat/lon values a statistically-insignificant distance on both lat and lon so any software that touches it (i.e. Mapnik, etc.) will see a truly unique point. I'm not sure how granular or "zoomed-in" your spatial data i [...]

Citing QGIS in formal publications?
Start here: https://qgis.org/en/site/getinvolved/faq/index.html#how-to-cite-qgis
Q: How to cite QGIS? A: To cite QGIS software in your piece of work, for work or an assignment, this general citation might be helpful: "QGIS Development Team (YEAR). QGIS Geographic Information System. Open Source Geospatial Foundation Project. [...]

Automating import of multiple rasters as layers into tilemill?
You could try the GDAL utility, gdalbuildvrt, to create a mosaicked VRT as a raster input to TileMill. It seems to be a recommended approach.

Putting graveyard online in GIS?
This is something I've given some thought to so I'll offer some reactions and feedback. Common, Recognized Coordinate Systems First--it's perfectly fine to start the interment dataset in Excel. My guess is you have some "army" of students, genealogy enthusiasts, and possibly some cemetery employees building the point data with GPS points. To avoid any frustrations down the road, just make sure everyone is taking LAT/LON po [...]

Are degree based length/area measures comparable across regions?
This answer on a question with a similar theme may provide an explanation for your observation:
..since your data is in Decimal Degrees, you will not be able to perform a linear calculation for the true area of your raster cells. Since the lines of Longitude converge at the Poles, the distance represented by 1 degree of Longitude decreases as you move north or south from the equator. Y [...]

what is the Parcel (APN) in this data block?
Jeryl, I'm glad you found a solution. Here's an expanded answer based on my earlier comment— It sounds like you want the pin field...to me that appears to be what I would call "the parcel number", which is a unique value used to identify a parcel in a taxable landbase, and which is often used to join an Assessor's CAMA ( [...]

Import a shapefile to postgis with ogr2ogr gives: Unable to open datasource
As you discovered by trial and error, there were few nagging issues you needed to fix, the last of which was resolved using ogr2ogr's -nlt GEOMETRY* argument. * Note the recommendation in @LeeHachadoorian's comment that -nlt PROMOTE_TO_MULTI be used as a default solution, rather than nlt GEOMETRY, as the former promotes best practice in addition to ancillary benefits. [...]

Leaflet: Map tile request, hidden key/secret via proxy
Basically you just need a PHP script that acts as a middle man and does the fetching for you, then returns what it gets directly to the client. I converted your JS snippet above into the relevant parts below. Notice that the url in your Leaflet tileLayer example has been changed to a PHP endpoint with URL parameters: [...]

Looking for dissolve algorithm for Javascript
Stumbled across this and thought I'd provide an example. In addition to my explanation, below, here's a JSFiddle demo with a couple extras. [3/18/2016: The structure of JSTS github has changed and this no longer works, however I discuss another way you can get JSTS in this post.] 1) First download the JSTS library [...]

Determining if two polygons are overlapping in Google Maps?
JSFiddle Example I've created a JSFiddle demonstrating a solution to your problem using the JavaScript Topology Suite (JSTS) (JSTS) library. Explaination There are two steps to this approach. The first step converts your Google geometries into WellKnownText (WKT) geometry expressions, which is a widely supported format. The second step uses JSTS to perform a JSTS [...]

How to call Legend end points of multiple layers published from Geoserver?
According to this blog, the GetLegendGraphic call will render a legend for Layer Groups. However, I wasn't able to confirm that in Geoserver documentation--perhaps because it's implicit that it should work? And unfortunately our Geoserver instance predates the blog (11.02.2013) so I wasn't able to test it against one of our layer groups, either. :/ [...]

Displaying MySQL database as layer on map?
If you're open to non-ESRI options, you could create a GDAL VRT file that defines your MySQL layer(s) as a spatial dataset, then you could use any software that can consume the VRT, for example Quantum GIS (QGIS), which is a desktop mapping application, or MapServer, which can serve tiles for internet mapping applications. [...]

Bulk lookup of address census tract and block
Ok Ben, here are my assumptions: 1) You've already got your data (I had some address points in a shapefile, and I downloaded census tract and census block shapefiles for Missouri). 2) You've already geocoded your address points and you're comfortable projecting the data. 3) You're comfortable with an [...]

How to set bounds and make map bounce back if moved away?
[Final Answer] I bet you can easily resolve this by setting the map's maxBounds equal to its initial bounds immediately upon loading. :) Just add this to your initializing code once your map variable is ready.

[Original Response] When you instantiate your Leaflet map, you just need to pass in a [...]

Finding Two locations with conditional search on DEM?
I am assuming that Q capacity represents something like "basin/area above a (pour) point". If so, SpatialAnalyst (an ArcGIS extension) has hydrology routines you can use to derive the watershed above any so-called pour point. To go from a raw DEM to a watershed; however, you have to do some preprocessing first. And I suspect you'll need to do some of these anyway regardless of what your ultimately needing to accomplish. [...]

Leaflet/HTML/GeoJSON: How to put a pop-up on a geoJSON point?
I think the trouble may simply be the formatting of your options block. Based on how I'm understanding Leaflet's documentation for GeoJSON, both onEachFeature and pointToLayer should be attributes of the same options object. What happens if you format it like this?
var geojson = L.geoJson(data, {
    onEachFeature: action_To_Perform_When_Marker_Is_Clicked_On_The_Map,
    pointToLayer: function (feature, latlng) {
      return L.circleMarker(latlng, geojsonMarkerOptions);

Sources of realtime spatial data
I think the question implies a preference for sources of real time vector data, but given the title, I thought it a good place to remark on any and all sources of real time GIS data. USGS Real Time Streamflow Data The US Geological Survey real time streamflow data provides a fun source of information. Clearly the gauges are points corresponding to changing streamflow values. From the USGS site: [...]

Improving performance when importing file geodatabase into PostgreSQL?
To emphasize @user30184's remark, try applying the OGR PostGRES driver config option to your ogr2ogr instruction: --config PG_USE_COPY YES Additionally, it might help to disable the AUTOVACUUM setting in the PostGRES conf, I know I've seen that mentioned in some OSM tips and tricks for improving import performance. [...]

Batch conversion of XY coordinates to latitude and longitude
[EDIT] The original source data is California State Plane Zone 2, i.e. EPSG:2226.
The following approach using ogr2ogr will perform a CSV to Shapefile conversion, including the coordinate transformation to Lat/Long (i.e. WGS84) that you're desiring. Basically I'm just adapting the approach demonstrated in [...]

Count Distinct with Where clause in OGR
Bingo. It involved a little witchcraft piping two ogr2ogr instructions together via STDIN/OUT, and you'll need to adapt it to your purposes, but something like this should work: ogr2ogr -f "GeoJSON" /vsistdout/ -dialect sqlite -sql " SELECT fullname, COUNT(*) as ct FROM ROADS_3857 GROUP BY fullname " "C:\xGIS\Vector\ROADS_3857.shp" | ogr2ogr -f "CSV" -where "ct=1" /vsistdout/ /vsistdin/ >"C:\xGIS\Vector\ROADS_3857_shpreport.txt" [...]

Convert WKT to GeoJSON with leaflet
If you've already got WKT, then you might considering using the JavaScript library, Wicket, to go straight from your WKT to Leaflet features. As this example shows, you can pass in a WKT string and a style/options object, and Wicket will return a feature object you can attach directly to a Leaflet FeatureGroup, etc. [...]

Making Open Street Maps Transparent in Leaflet
This is more correctly an issue with your tile server config, and not with your leaflet code. You need to change the layer styling of your OSM tiles so that there is no background-color in the tiles generated. Your technology may differ, but I have used Mapnik to render transparent tiles, and in the XML style sheet, I notice this bit at the top, where it defines the overall "map" style it's going to render against.. [...]

Ways to determine winding topographic characteristics of a river
I'm not a hydrologist, so I'm not aware of any metrics/heuristics that should likely govern your methods, but here's a stream-of-consciousness response for something that would be fun to try. Interpolate points along the line: First, I'd interpolate points along the line with an equal-length, short spacing according to a [...]

Fisheye-like projection
D3 has a fisheye distortion plugin, which I found by Googling "svg fisheye transform".. It might be useful for your situation. Basically, I'm suggesting converting some of your shapefiles to SVG (or GeoJSON?) making your map using the increasingly popular D3.js library. My thinking was, I knew the country boundary geometries could be converted to SVG vector types, and I suspected that as SVG, there might be more suitable approaches to implement the fisheye transform you're desiring. [...]

Tile server return empty features
I noticed your shapefile has no .prj sidecar file. If you have installed the GDAL/OGR toolkit, it could be worth a try to attach the projection information to see if that brings everything to life. Use ogr2ogr to fix it.. Your data appears to be in WGS84 (i.e. EPSG:4326), so the following ogr2ogr command will [...]

Drawing historical shipping routes?
Since you already know the routes you want to illustrate, I'm not sure pgRouting is the right tool for the job—I believe it intended to support questions involving routing where you have a number of alternate path options, and you want to identify the most optimal route, chiefly among driving s [...]

Understanding GeoTIFF tags?
It seems to me your question has two parts--1) what do the tags tell you about the coordinate system, and an implied 2) how to extract positional data based on the image's coordinate system. TAGS: L_Holcombe is right, in that the PCS (projected coordinate system) holds an EPSG code for the coordinate system that is [...]

Area is calculating wrong using $area in field calculator (QGIS 2.8.1-Wien)
Without precisely knowing the projection of your data, it's difficult to be sure what went wrong with your calculation. That said, it's always risky methodology to allow any kind of reprojection on the fly in your GIS when you're additionally performing geometry calculations. The same is true if you [...]

How to query postgres with gis to get GeoJSON for GeoJSON tile layer?
This is how I would form the query you're asking about using ST_MakeEnvelope() and the && operator. You can request whatever field data you want, in addition to the geometry in GeoJSON format using ST_AsGeoJSON(). Also I recommend taking advantage of that function's ability to specify a max decimal precision value. Here I'm requesting geometries with 7 decimal places. [...]

How to order points along a line?
If using PostGIS, you can order the bus stops according to their value returned for an ST_Line_Locate_point() call.
This is how it looks if I apply it to the linestring and points you supplied:
  ST_Line_Locate_Point(line.f1, ST_GeomFromText('POINT(-70.58176091969386334 -33.37599871220383818)')) as A,
  ST_Line_Locate_Point(line.f1, ST_GeomFromText('POINT(-70.58081166577235877 -33.37588970535671251)')) as B,
  ST_Line_Locate_Point(line.f1, ST_GeomFromText('POINT(-70.57890070625846 [...]