瀏覽代碼

v.distance: fix geodesic distance

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@61861 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 10 年之前
父節點
當前提交
65e7bf86d3
共有 1 個文件被更改,包括 18 次插入0 次删除
  1. 18 0
      vector/v.distance/main.c

+ 18 - 0
vector/v.distance/main.c

@@ -363,6 +363,24 @@ int main(int argc, char *argv[])
 
 	dx = fbox.E - fbox.W;
 	dy = fbox.N - fbox.S;
+
+	if (geodesic) {
+	    double d;
+	    
+	    G_begin_distance_calculations();
+	    dx = G_distance(fbox.W, fbox.S, fbox.E, fbox.S);
+	    d = G_distance(fbox.W, fbox.N, fbox.E, fbox.N);
+	    
+	    if (dx < d)
+		dx = d;
+
+	    dy = G_distance(fbox.W, fbox.S, fbox.W, fbox.N);
+	    d = G_distance(fbox.E, fbox.S, fbox.E, fbox.N);
+	    
+	    if (dy < d)
+		dy = d;
+	}
+
 	if (Vect_is_3d(&From))
 	    dz = fbox.T - fbox.B;
 	else