示例#1
0
 @Override
 protected void parseRelations(List<Osmformat.Relation> osmRels) {
   if (exception == null) {
     try {
       for (Osmformat.Relation r : osmRels) {
         final Info info = r.getInfo();
         if (!info.hasVersion()) discourageUpload = true;
         final Relation rel = new Relation(r.getId(), info.hasVersion() ? info.getVersion() : 1);
         setMetadata(rel, info);
         Map<String, String> keys = new HashMap<>();
         for (int i = 0; i < r.getKeysCount(); i++) {
           keys.put(getStringById(r.getKeys(i)), getStringById(r.getVals(i)));
         }
         rel.setKeys(keys);
         long previousId = 0; // Member ids are delta coded
         Collection<RelationMemberData> members = new ArrayList<>();
         for (int i = 0; i < r.getMemidsCount(); i++) {
           members.add(
               new RelationMemberData(
                   getStringById(r.getRolesSid(i)),
                   mapOsmType(r.getTypes(i)),
                   previousId += r.getMemids(i)));
         }
         relations.put(rel.getUniqueId(), members);
         externalIdMap.put(rel.getPrimitiveId(), rel);
       }
     } catch (IllegalDataException e) {
       exception = e;
     }
   }
   if (discourageUpload) ds.setUploadDiscouraged(true);
 }