Explorar el Código

dont add empty polygons to meta group

Patrick Brosi hace 4 años
padre
commit
732a6dbd36
Se han modificado 3 ficheros con 16 adiciones y 6 borrados
  1. 14 4
      src/osmfixer/index/StatIdx.cpp
  2. 1 1
      web/index.html
  3. 1 1
      web/script.js

+ 14 - 4
src/osmfixer/index/StatIdx.cpp

@@ -188,11 +188,17 @@ void StatIdx::readFromFile(const std::string& path) {
188
 
188
 
189
   LOG(INFO) << "Done.";
189
   LOG(INFO) << "Done.";
190
 
190
 
191
-  LOG(INFO) << "Building indices...";
191
+  LOG(INFO) << "Init groups";
192
   initGroups();
192
   initGroups();
193
+  LOG(INFO) << "Done.";
194
+  LOG(INFO) << "Init meta groups";
193
   initMetaGroups();
195
   initMetaGroups();
196
+  LOG(INFO) << "Done.";
197
+  LOG(INFO) << "Init suggestions";
194
   initSuggestions();
198
   initSuggestions();
199
+  LOG(INFO) << "Done.";
195
 
200
 
201
+  LOG(INFO) << "Building indices...";
196
   initIndex();
202
   initIndex();
197
   LOG(INFO) << "Done.";
203
   LOG(INFO) << "Done.";
198
 }
204
 }
@@ -242,9 +248,12 @@ void StatIdx::initMetaGroups() {
242
     auto& mg = p.second;
248
     auto& mg = p.second;
243
     util::geo::MultiPoint<double> mp;
249
     util::geo::MultiPoint<double> mp;
244
     for (size_t gid : mg.groups) {
250
     for (size_t gid : mg.groups) {
245
-      for (auto p : _groups[gid].poly.getOuter()) mp.push_back(p);
246
-      mg.poly = hull(mp, 11);
251
+      if (_groups[gid].polyStations.size() == 0) continue;
252
+      for (const auto& p : _groups[gid].poly.getOuter()) mp.push_back(p);
247
     }
253
     }
254
+    mg.poly = hull(mp, 11);
255
+    assert(mg.poly.getOuter().size());
256
+
248
 
257
 
249
     for (auto p : mg.poly.getOuter()) {
258
     for (auto p : mg.poly.getOuter()) {
250
       mg.llPoly.getOuter().push_back(
259
       mg.llPoly.getOuter().push_back(
@@ -312,7 +321,7 @@ void StatIdx::initGroups() {
312
       }
321
       }
313
     }
322
     }
314
 
323
 
315
-    // take the longest name as the identifier
324
+    // take the best fitting name as the identifier
316
     std::sort(_groups[gid].uniqueNames.begin(), _groups[gid].uniqueNames.end(),
325
     std::sort(_groups[gid].uniqueNames.begin(), _groups[gid].uniqueNames.end(),
317
               byAttrScore);
326
               byAttrScore);
318
   }
327
   }
@@ -326,6 +335,7 @@ void StatIdx::initGroups() {
326
   }
335
   }
327
 
336
 
328
   // build hull polygon
337
   // build hull polygon
338
+
329
   for (size_t i = 0; i < _groups.size(); i++) {
339
   for (size_t i = 0; i < _groups.size(); i++) {
330
     util::geo::MultiPoint<double> mp;
340
     util::geo::MultiPoint<double> mp;
331
     for (size_t stid : _groups[i].polyStations) {
341
     for (size_t stid : _groups[i].polyStations) {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
web/index.html


+ 1 - 1
web/script.js

@@ -363,7 +363,7 @@ function rndrMGr(grp) {
363
         var gr = grp.groups[key];
363
         var gr = grp.groups[key];
364
         var row = $$('div');
364
         var row = $$('div');
365
 
365
 
366
-        row.innerHTML = "Relation <a onmouseover='grHl( " + gr.id + ")' onmouseout='grUnHl( " + gr.id + ")' target='_blank' href='" + osmUrl + "relations/" + gr.osmid + "'>" + gr.osmid + "</a>";
366
+        row.innerHTML = "Relation <a onmouseover='grHl( " + gr.id + ")' onmouseout='grUnHl( " + gr.id + ")' target='_blank' href='" + osmUrl + "relation/" + gr.osmid + "'>" + gr.osmid + "</a>";
367
         if (gr.attrs.name) row.innerHTML += " (<b>\"" + gr.attrs.name[0] + "\"</b>)";
367
         if (gr.attrs.name) row.innerHTML += " (<b>\"" + gr.attrs.name[0] + "\"</b>)";
368
         row.style.backgroundColor = gr.e ? '#f58d8d' : gr.s ? '#b6b6e4' : '#c0f7c0';
368
         row.style.backgroundColor = gr.e ? '#f58d8d' : gr.s ? '#b6b6e4' : '#c0f7c0';
369
 
369