Wyjaśnij podstawy projekcji d3js

Próbuję zrozumieć podstawy projekcji geo w d3, dzięki czemu mogę efektywnie obracać, skalować i tłumaczyć współrzędne.

Czy wyniki rzutu w domyślnym układzie współrzędnych svg, z początkiem w lewym górnym rogu i dodatnimi wartościami y przesuwającymi się w dół siatki? Czy też wyniki we współrzędnych kartezjańskich, z dodatnimi wartościami y przesuwającymi się w górę siatki?

Przeprowadziłem ten test. Punkt a znajduje się w północno-zachodniej części SF. Punkt b znajduje się w południowo-wschodniej części SF. Spodziewałem się, że x wartość rzutu punktu a będzie mniejsza (po lewej) projekcji punktu b. Podobnie spodziewałem się, że wartość y rzutu punktu a będzie mniejsza (powyżej) projekcji punktu b.

p = d3.geo.transverseMercator()
a = [-122.490402, 37.786453]
b = [-122.389809, 37.72728]
ap = p(a) // [359.30926341688723, -76.50496169565764]
bp = p(b) // [358.9636503828066, -76.46080714063936]

Zamiast tego wskaż wartość x projekcji a jest większa niż b, a więc skończy się poniżej b na kanwie svg.

[aktualizacja # 1]

Badałem zestaw testów. Widzę w nim następujące wartości:

(w albers-test.js)

"San Francisco, CA": [[-122.42000000,   37.78000000], [ 107.44485839,  214.04820561]]

(w azimuthal-equal-area-test.js i kilku innych)

"San Francisco, CA": [[ -46.16620803,   77.04946507], [ 448.09318291,   57.65281089]]

To mówi mi, że jestem bardzo zdezorientowany.

Dlaczego w testach występują 2 różne wartości długości / szerokości geograficznej dla SF?

Jestem wyraźnie wyłączony z chwastów. Pomóż mi wrócić na właściwe tory.

-Kelly

questionAnswers(1)

yourAnswerToTheQuestion