OpenLayers Map Проекции с помощью Proj4JS
Я пытаюсь наложить данные о водоразделе Чесапикского залива на карту OpenLayers. Проблема в том, как бы я ни пытался спроецировать данные, водораздел (нарисованный с помощью d3) не в правильном положении. Код, который я использую для увеличения масштаба, находится здесь:
zoomToWatershed: function() {
// Remove any svg currently on the map
CP.MapFunctions.reset();
// Fetch data from Flask
CP.RequestHandler.get(
"/get_data/watershed_topo",
function(json) {
ws = JSON.parse(json);
watershed_coords = ws.features[0].geometry.coordinates[0];
CP.map.setCenter(CP.cumberland, CP.watershed_zoom);
watershed_coords.forEach(function(pair) {
// Transform from NAD83 to Web Mercator
var t = proj4(proj4.defs["EPSG:4269"], proj4.defs["SR-ORG:7483"], pair);
// Get the pixel values
px = CP.map.getViewPortPxFromLonLat(
new OpenLayers.LonLat(t[0], t[1])
);
pair[0] = px.x;
pair[1] = px.y;
});
// console.log(watershed_coords);
CP.canvas.append("path")
.datum(watershed_coords)
.attr("d", d3.svg.line())
.attr("class", "watershed");
}
);
}
Файл формы, который я использую для водораздела, не имел файла.prj, но в метаданных на ftp-сервере указывалось, что используется проекция NAD83 (EPSG4269), отсюда и преобразование. SR-ORG:7483 является эквивалентом EPSG:900913 или стандартной картографической проекции в сети.
Части Proj4js определены в отдельном js-файле следующим образом:
proj4.defs["EPSG:4269"] = "+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs";
proj4.defs["SR-ORG:6864"] = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=637813 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
proj4.defs["SR-ORG:7483"] = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs";
Мой вопрос: где я иду не так? Я протестировал как картографические проекции веб-стандарта (то есть EPSG:900913 и EPSG:3857, которые, я уверен, на самом деле одно и то же), так и стандарт EPSG:4326.