Tôi có ứng dụng đường ray đang sử dụng rgeo 0.3.19 với hỗ trợ proj4 kết nối với cơ sở dữ liệu PostGIS 1.5 bằng đá quý rgeo-activerecord 0.4.5.Đa giác vùng đệm RGeo quá nhỏ
Ứng dụng của tôi có một mô hình được gọi là Khu vực có chứa một điểm địa lý, bán kính và hình đa giác. Khi một vùng mới sắp lưu nó sử dụng hàm đệm của geofactory của vùng để tạo một đa giác bằng cách sử dụng bán kính và điểm địa lý.
Đây là geofactory đang được sử dụng cho các mô hình khu vực
GEOFACTORY = 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)
Các projection_srid Tôi đang sử dụng là của Apple và Google maps chiếu Mercator 3857. Vấn đề là bộ đệm đang được tạo ra không phải là kích thước giống như tôi vẽ trong bản đồ táo hoặc bản đồ google. Ví dụ: nếu tôi sử dụng chức năng MapKit được xây dựng MKCircle
[MKCircle circleWithCenterCoordinate:self.coordinate radius:50];
Vòng tròn sẽ vẽ và phủ lên như thế này.
Nhưng nếu tôi lấy tọa độ đã được tạo thành hàm đệm tạo nên hình đa giác trong cơ sở dữ liệu và vẽ chúng trên bản đồ google tôi nhận được điều này.
Như bạn có thể thấy, đa giác được tạo ra bằng cách sử dụng hệ thống chiếu cùng là nhỏ hơn nó nên được. Vấn đề này phát triển theo cấp số nhân ngoài tầm kiểm soát dựa trên kích thước của bán kính được xác định. Tôi cũng đã cố gắng sử dụng nhà máy simple_mercator như được định nghĩa trong RGeo mang lại kết quả tương tự.
Hy vọng rằng ai đó có một số thông tin chi tiết về lý do tại sao, khi một vĩ độ, vĩ độ dự kiến điểm được đệm nó tạo ra một đa giác có kích thước không chính xác.
Cảm ơn bạn đã chỉnh sửa, MobileOverlord. Tôi quên không có một chức năng bảo mật nào trong Ruby. Đó là những gì tôi nhận được để đăng mã mà không thử nghiệm nó đầu tiên ... :-) –