Ich versuche, eine Bounding Box in einem bestimmten Maßstab von einer Mittelkoordinate zu erstellen. Ich versuche, es im Seitenverhältnis eines 8,5 x 11 Zoll Blatt Papier (612 x 792 Pixel @ 72 dpi) zu halten.Create Bounding Box von der Mitte der Koordinate
Der Code, den ich unten verwende, funktioniert meistens, aber die Höhe scheint für das Seitenverhältnis eines Buchstabens etwas zu groß zu sein. Betrachte ich nicht die Mercator-Projektion? Was fehlt mir hier?
def bounding_box_from_point(center:, size:, scale_denominator:)
dpi = 72
inches_per_unit = 4374754
resolution = 1/(scale_denominator * inches_per_unit * dpi)
half_width_deg = (size.width * resolution)/2
half_height_deg = (size.height * resolution)/2
BoundingBox.new(
north: center.lat + half_height_deg,
south: center.lat - half_height_deg,
east: center.lon + half_width_deg,
west: center.lon - half_width_deg
)
end
Aufruf bounding_box_from_point(center: center, size: size, scale_denominator: scale)
mit:
scale = 0.0008861342166177423 (i.e. 1/18055.955520)
center = Geometry::Location.new(lat: 37.806336, lon: -122.270625)
size.width = 612,
size.height = 792
Es gibt:
west: -122.27172131608657,
east: -122.26952868391342,
south: 37.804917238005615
north: 37.80775476199439
Wenn Sie http://www.openstreetmap.org/export gehen und geben Sie diese Zeichen-Box-Koordinaten, können Sie sehen, dass das Verhältnis nicht überein von einem 8,5x11in Blatt Papier ... es ist etwas zu groß. Was mache ich hier falsch oder nicht?
Es ist nicht so sehr die Mercator-Projektion, wie es die Tatsache ist, dass Längengradlinien näher zusammen kommen, wenn Sie sich vom Äquator entfernen. Ihre Karte ist nicht zu groß, es ist zu dünn, –
Siehe http://StackOverflow.com/A/2913249/4504607 –
@RonJensen so, wie passen Sie für diese? – theartofbeing