|
@@ -107,7 +107,7 @@ void what(double east, double north, double maxdist, int topo, int showextra, in
|
|
|
{
|
|
|
int type;
|
|
|
char east_buf[40], north_buf[40];
|
|
|
- double sq_meters;
|
|
|
+ double sq_meters, sqm_to_sqft, acres, hectares, sq_miles;
|
|
|
double z = 0, l = 0;
|
|
|
int notty = 0;
|
|
|
int getz = 0;
|
|
@@ -124,6 +124,12 @@ void what(double east, double north, double maxdist, int topo, int showextra, in
|
|
|
Cats = Vect_new_cats_struct();
|
|
|
db_init_string(&html);
|
|
|
|
|
|
+ /* always use plain feet not US survey ft */
|
|
|
+ /* if you really want USfeet, try G_database_units_to_meters_factor()
|
|
|
+ here, but then watch that sq_miles is not affected too */
|
|
|
+ sqm_to_sqft = 1 / ( 0.0254 * 0.0254 * 12 * 12 );
|
|
|
+
|
|
|
+
|
|
|
for (i = 0; i < nvects; i++) {
|
|
|
|
|
|
Vect_reset_cats(Cats);
|
|
@@ -134,8 +140,7 @@ void what(double east, double north, double maxdist, int topo, int showextra, in
|
|
|
maxdist, 0, 0);
|
|
|
if (line == 0) {
|
|
|
line = Vect_find_line(&Map[i], east, north, 0.0,
|
|
|
- GV_LINE | GV_BOUNDARY | GV_FACE, maxdist, 0,
|
|
|
- 0);
|
|
|
+ GV_LINE | GV_BOUNDARY | GV_FACE, maxdist, 0, 0);
|
|
|
}
|
|
|
|
|
|
if (line == 0) {
|
|
@@ -364,7 +369,16 @@ void what(double east, double north, double maxdist, int topo, int showextra, in
|
|
|
fprintf(stdout, _("Type: Area\n"));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
sq_meters = Vect_get_area_area(&Map[i], area);
|
|
|
+ hectares = sq_meters / 10000.;
|
|
|
+ /* 1 acre = 1 chain(66') * 1 furlong(10 chains),
|
|
|
+ or if you prefer ( 5280 ft/mi ^2 / 640 acre/sq mi ) */
|
|
|
+ acres = (sq_meters * sqm_to_sqft) / (66 * 660);
|
|
|
+ sq_miles = acres / 640.;
|
|
|
+
|
|
|
+
|
|
|
if (topo) {
|
|
|
int nisles, isleidx, isle, isle_area;
|
|
|
|
|
@@ -405,26 +419,23 @@ void what(double east, double north, double maxdist, int topo, int showextra, in
|
|
|
else {
|
|
|
if (script) {
|
|
|
fprintf(stdout, "Sq_Meters=%.3f\nHectares=%.3f\n",
|
|
|
- sq_meters, (sq_meters / 10000.));
|
|
|
+ sq_meters, hectares);
|
|
|
fprintf(stdout, "Acres=%.3f\nSq_Miles=%.4f\n",
|
|
|
- ((sq_meters * 10.763649) / 43560.),
|
|
|
- ((sq_meters * 10.763649) / 43560.) / 640.);
|
|
|
+ acres, sq_miles);
|
|
|
}
|
|
|
else {
|
|
|
fprintf(stdout, _("Sq Meters: %.3f\nHectares: %.3f\n"),
|
|
|
- sq_meters, (sq_meters / 10000.));
|
|
|
+ sq_meters, hectares);
|
|
|
fprintf(stdout, _("Acres: %.3f\nSq Miles: %.4f\n"),
|
|
|
- ((sq_meters * 10.763649) / 43560.),
|
|
|
- ((sq_meters * 10.763649) / 43560.) / 640.);
|
|
|
+ acres, sq_miles);
|
|
|
}
|
|
|
if (notty) {
|
|
|
fprintf(stderr,
|
|
|
_("Sq Meters: %.3f\nHectares: %.3f\n"),
|
|
|
- sq_meters, (sq_meters / 10000.));
|
|
|
+ sq_meters, hectares);
|
|
|
fprintf(stderr,
|
|
|
_("Acres: %.3f\nSq Miles: %.4f\n"),
|
|
|
- ((sq_meters * 10.763649) / 43560.),
|
|
|
- ((sq_meters * 10.763649) / 43560.) / 640.);
|
|
|
+ acres, sq_miles);
|
|
|
}
|
|
|
nlines += 3;
|
|
|
}
|