func (dec *dataDecoder) parseDenseNodes(pb *OSMPBF.PrimitiveBlock, dn *OSMPBF.DenseNodes) { st := pb.GetStringtable().GetS() granularity := int64(pb.GetGranularity()) latOffset := pb.GetLatOffset() lonOffset := pb.GetLonOffset() dateGranularity := int64(pb.GetDateGranularity()) ids := dn.GetId() lats := dn.GetLat() lons := dn.GetLon() di := dn.GetDenseinfo() tu := tagUnpacker{st, dn.GetKeysVals(), 0} var id, lat, lon int64 var state denseInfoState for index := range ids { id = ids[index] + id lat = lats[index] + lat lon = lons[index] + lon latitude := 1e-9 * float64((latOffset + (granularity * lat))) longitude := 1e-9 * float64((lonOffset + (granularity * lon))) tags := tu.next() info := extractDenseInfo(st, &state, di, index, dateGranularity) dec.q = append(dec.q, &Node{id, latitude, longitude, tags, info}) } }
func (dec *dataDecoder) parseNodes(pb *OSMPBF.PrimitiveBlock, nodes []*OSMPBF.Node) { st := pb.GetStringtable().GetS() granularity := int64(pb.GetGranularity()) dateGranularity := int64(pb.GetDateGranularity()) latOffset := pb.GetLatOffset() lonOffset := pb.GetLonOffset() for _, node := range nodes { id := node.GetId() lat := node.GetLat() lon := node.GetLon() latitude := 1e-9 * float64((latOffset + (granularity * lat))) longitude := 1e-9 * float64((lonOffset + (granularity * lon))) tags := extractTags(st, node.GetKeys(), node.GetVals()) info := extractInfo(st, node.GetInfo(), dateGranularity) dec.q = append(dec.q, &Node{id, latitude, longitude, tags, info}) panic("Please test this first") } }