What spot in Manhattan is farthest from any subway stop?
I thought I’d have a crack and writing some code to answer this Quora question.
Here is the resulting map, pixel value (grey scale) indicates pixel distance from nearest subway station:
I’m afraid the overlay is a bit of a mess, I’ll try and fix this tomorrow. But according to this map the answer is the far corner of Battery Park.
Here’s the code I used:
#include <png++/png.hpp>
#include <iostream>
#include <math.h>
using namespace std;
bool is_black(png::image< png::rgba_pixel > &image,size_t x,size_t y) {
if(((image[y][x].red == 0) && (image[y][x].green == 0) && (image[y][x].blue == 0))) return true;
return false;
}
int get_distance(int x,int y,int cx,int cy) {
int xd = (cx-x);
if(xd<0) xd = 0-xd;
int yd = cy-y;
if(yd<0) yd = 0-yd;
return sqrt((xd*xd)+(yd*yd));
}
int get_nextdist(png::image< png::rgba_pixel > &image,size_t xin,size_t yin) {
int x = xin;
int y = yin;
int mindist = 10000;
for(int cx=(x-500);cx<(x+500);cx++) {
for(int cy(y-500);cy<(y+500);cy++) {
if((cx > 0) && (cy > 0) && (cx < image.get_width()) && (cy < image.get_height())) {
if(is_black(image,cx,cy)) {
int dist = get_distance(x,y,cx,cy);
if(dist < mindist) mindist = dist;
}
}
}
}
return mindist;
}
int main() {
png::image< png::rgba_pixel > image("input.png");
// Make image black and white.
for (size_t y = 0; y < image.get_height(); ++y) {
for (size_t x = 0; x < image.get_width(); ++x) {
if(((image[y][x].red < 80 ) && (image[y][x].green < 80 ) && (image[y][x].blue < 80 ) && (image[y][x].alpha != 0)) ||
((image[y][x].red == 255) && (image[y][x].green == 255) && (image[y][x].blue == 255) && (image[y][x].alpha != 0))) {
image[y][x] = png::rgba_pixel(0, 0, 0);
} else {
image[y][x] = png::rgba_pixel(255, 255, 255);
}
}
}
png::image< png::rgba_pixel > oimage = image;
// Filter out isolated pixels...
for (size_t y = 1; y < (image.get_height()-1); ++y) {
for (size_t x = 1; x < (image.get_width()-1); ++x) {
if(is_black(oimage,x,y)) {
int adj = 0;
if(is_black(oimage,x+1,y )) {adj++; }
if(is_black(oimage,x-1,y )) {adj++; }
if(is_black(oimage,x ,y+1)) {adj++; }
if(is_black(oimage,x ,y-1)) {adj++; }
if(adj > 3) {
// do nothing...
image[y][x] = png::rgba_pixel(0, 0, 0,255);
} else {
image[y][x] = png::rgba_pixel(255, 255, 255,255);
}
}
}
}
oimage = image;
// Set each pixel value to min distance to nearest pixel.
for (size_t y = 0; y < image.get_height(); ++y) {
for (size_t x = 0; x < image.get_width(); ++x) {
if(!is_black(oimage,x,y)) {
cout << "processing: " << x << "," << y << endl;
int distance = get_nextdist(oimage,x,y);
image[y][x] = png::rgba_pixel(distance, distance, distance,255);
}
}
}
image.write("output.png");
}
Assorted files used…
Maps from:
http://www.mta.info/nyct/maps/submap.htm (cropped from PDF).



What spot in Manhattan is farthest from any subway stop?…
If I’ve understood the question correctly, the far corner of Battery Park. I downloaded the New York subway map and cropped the image to cover Manhattan. I extracted the black or white dots as stations and then calculated the distance to the nearest s…