Tôi đang vẽ vùng (sử dụng SqlGeometry
/SqlGeography
và dịch chúng sang tương đương WPF LocationCollection
) trên Điều khiển WPF của Bing Maps và cần gắn nhãn chúng . Tôi nhận được các nhãn được vẽ trên các khu vực và đính kèm chúng vào điểm được tìm thấy bởi STCentroid()
. Tất nhiên như bạn tưởng tượng đây là một vấn đề với các khu vực hình chữ 'U' hoặc 'C', nơi mà trọng tâm kết thúc bên ngoài khu vực, khiến cho nhãn không chính xác.Sử dụng dữ liệu không gian Sql (C#) để tìm trung tâm "trực quan" của đa giác bất thường
Có cách nào sử dụng SqlGeometry
/SqlGeography
để tìm trung tâm "trực quan" hoặc có thể tìm thấy vòng tròn lớn nhất có thể vừa với hình dạng và sử dụng trung tâm đó? Tôi đã thử sử dụng various methodsSTPointOnSurface()
nhưng có vẻ như STPointOnSurface()
luôn chọn một điểm trên mép như vậy DCREHA (nhãn đối với khu vực màu xanh đậm phía dưới luôn kết thúc lên trên các cạnh:
Giả sử rằng chỉ có một hình dạng, một giải pháp có thể là tìm mặt mở và sau đó di chuyển nhãn ở phía đối diện cho đến khi nhãn nằm trong hình. Bạn cũng có thể làm một số bộ lọc để loại bỏ một số khu vực. Hoặc bạn có thể cố gắng tìm khu vực lõm lớn nhất (tôi không biết nếu có thuật toán cho điều đó). – Phil1970
Related: http://stackoverflow.com/q/1203135/3628232 –
Vậy đâu là "trung tâm hình ảnh" của một hình chữ U? –