rgeo-activerecord 0.4.5 taşına sahip PostGIS 1.5 veritabanına bağlanan r4o 0.3.19 proj4 desteğine sahip bir ray uygulamasına sahibim.RGeo Öngörülen Tampon Çokgen çok küçük
Uygulamamın coğrafi nokta, yarıçap ve çokgen şekli içeren Bölge adlı bir modeli var. Yeni bir bölge kaydetmek üzereyken, yarıçapı ve coğrafi noktayı kullanarak bir poligon oluşturmak için bölgenin geofactory's buffer işlevini kullanır. İşte
bölge modeli için kullanılıyor geofactory olanGEOFACTORY = RGeo::Geographic.projected_factory(:buffer_resolution => 8, :projection_proj4 => '+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 [email protected] +wktext +no_defs', :projection_srid => 3857)
kullanıyorum projection_srid Apple ve Google Mercator projeksiyonu 3857. eşler arasında sorun olduğunu olduğunu oluşturuluyor tampon elma haritalarında veya google haritalarında çizdiğim ile aynı boyutta değil. Kullandığım Örneğin, MapKit fonksiyonu MKCircle
[MKCircle circleWithCenterCoordinate:self.coordinate radius:50];
daire çizin ve böyle kaplayacaktır inşa.
Ancak oluşturulan koordinatları alırsam, veritabanındaki çokgen şeklini oluşturan arabellek işlevini oluşturur ve bunları Google haritalarında çizerim. Gördüğünüz gibi
, aynı projeksiyon sistemi kullanılarak oluşturulan poligon olması gerekenden daha küçüktür. Bu problem, tanımlanmış yarıçapın boyutuna bağlı olarak kontrol dışına büyür. Ben de aynı sonuçları veren RGeo'da tanımlandığı gibi simple_mercator fabrikasını kullanmaya çalıştım.
Umarız birisinin, bir boylam, enlemin yansıtıldığı noktanın arabelleğe alındığı zaman, yanlış boyutta bir çokgenin neden oluştuğuna dair bir içgörüsü vardır.
Düzenleme için teşekkürler, MobileOverlord. Ruby'de bir sekreter fonksiyonu olmadığını unuttum. İlk önce test etmeden kod yayınladığım şey bu ... :-) –