2012-09-12 26 views
6

Tôi đang làm việc với Entity-Framework 5 mới bằng cách sử dụng dữ liệu không gian DbGeography như một phần của mô hình của tôi để lưu trữ trong một ví dụ. Ví dụ một POLYGON.Cách chỉnh sửa Định hướng Vòng Polygon bằng C# Entity Framework 5 DbGeography Dữ liệu Không gian

Khi đặt giá trị POLYGON của tôi tất cả sẽ tiết kiệm mà không có lỗi tuy nhiên đây chỉ là trường hợp nếu tôi vẽ Đa giác trên bản đồ theo thứ tự chiều kim đồng hồ. Nếu tôi vẽ POLGON theo hướng ngược chiều kim đồng hồ, tôi sẽ gặp lỗi ở mức sql cho biết dữ liệu là loại địa lý không hợp lệ.

Bây giờ sau khi thực hiện nghiên cứu của riêng mình về vấn đề này, nó xuất hiện để xuất phát từ loại dữ liệu địa lý khá nghiêm ngặt về định hướng vòng Polygons. Các giải pháp phổ biến nhất dường như được tạo ra các đa giác như là một hình học và sau đó chuyển đổi nó thành một loại địa lý.

Tôi đang tìm một giải pháp trong C# có thể được áp dụng cho dữ liệu trước khi được gửi đến sql. Về cơ bản cái gì đó sẽ tự động sửa định hướng vòng của một mảng tọa độ.

Tôi đã thử bắt lỗi và sau đó xây dựng lại chuỗi bằng cách đảo ngược mảng. Điều này làm việc trong một số trường hợp, nhưng trước hết nó không đáng tin cậy và thứ hai là bắt được một lỗi lớn.

Cảm ơn Chris

Trả lời

0

Cùng một vấn đề ở đây, sử dụng bản đồ Bing v7 và bộ công cụ hình dạng của chúng để vẽ đa giác tìm thấy ở đây: http://bingmapsv7modules.codeplex.com/wikipage?title=Shape%20Toolbox%20Module

+0

Hi Adam, điều này có vẻ như một lời nhận xét mà nên được bổ sung như một bình luận cho câu hỏi , không được đăng dưới dạng câu trả lời. Vì bạn mới ở đây, bạn phải chủ động để kiếm được danh tiếng hơn một chút, vì vậy bạn có thể đăng bình luận. – VKen

2

Tôi đã có thứ tự cấp tự của tôi, và tôi giải quyết nó bằng cách sử dụng MakeValidGeographyFromText chức năng từ SQLSpatialTools tôi đã sử dụng nó theo cách sau bên trong một SP:

SET @ge = dbo.MakeValidGeographyFromText(
    'POLYGON((' + @pois + '))', 4326); 

đâu @pois là một chuỗi chứa tọa độ ở định dạng hợp lệ, nhưng quay sai.

Tôi không chắc chắn như thế nào dễ dàng này là để tích hợp với EF-5, nhưng tôi thấy hai cách:

  1. Sử dụng chức năng trực tiếp từ C#, trước khi gọi EF với đa giác chính xác.
  2. Cài đặt sqlspatialtools trên máy chủ SQL và thực hiện quá trình xử lý ở đó.
3

Hi tôi có cùng một vấn đề và giải quyết nó bằng cách sử dụng

var sqlGeography = SqlGeography.STGeomFromText().MakeValid() 
var invertedSqlGeography = sqlGeography.ReorientObject(); 

Để biết thêm chi tiết, xem here

Các vấn đề liên quan