Class: Google::Apis::CivicinfoV2::FeatureIdProto
- Inherits:
-
Object
- Object
- Google::Apis::CivicinfoV2::FeatureIdProto
- Includes:
- Google::Apis::Core::Hashable, Google::Apis::Core::JsonObjectSupport
- Defined in:
- lib/google/apis/civicinfo_v2/classes.rb,
lib/google/apis/civicinfo_v2/representations.rb,
lib/google/apis/civicinfo_v2/representations.rb
Overview
A globally unique identifier associated with each feature. We use 128-bit identifiers so that we have lots of bits available to distinguish between features. The feature id currently consists of a 64-bit "cell id" that ** sometimes** corresponds to the approximate centroid of the feature, plus a 64- bit fingerprint of other identifying information. See more on each respective field in its comments. Feature ids are first assigned when the data is created in MapFacts. After initial creation of the feature, they are immutable. This means that the only properties that you should rely on are that they are unique, and that cell_ids often - but not always - preserve spatial locality. The degree of locality varies as the feature undergoes geometry changes, and should not in general be considered a firm guarantee of the location of any particular feature. In fact, some locationless features have randomized cell IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that fprints in the id field of features will be globally unique. Using the fprint allows consumers who don't need the spatial benefit of cell ids to uniquely identify features in a 64-bit address space. This property is not guaranteed for other sources of FeatureProtos.
Instance Attribute Summary collapse
-
#cell_id ⇒ Fixnum
The S2CellId corresponding to the approximate location of this feature as of when it was first created.
-
#fprint ⇒ Fixnum
A 64-bit fingerprint used to identify features.
-
#temporary_data ⇒ Google::Apis::CivicinfoV2::MessageSet
This is proto2's version of MessageSet.
Instance Method Summary collapse
-
#initialize(**args) ⇒ FeatureIdProto
constructor
A new instance of FeatureIdProto.
-
#update!(**args) ⇒ Object
Update properties of this object.
Constructor Details
#initialize(**args) ⇒ FeatureIdProto
Returns a new instance of FeatureIdProto.
711 712 713 |
# File 'lib/google/apis/civicinfo_v2/classes.rb', line 711 def initialize(**args) update!(**args) end |
Instance Attribute Details
#cell_id ⇒ Fixnum
The S2CellId corresponding to the approximate location of this feature as of
when it was first created. This can be of variable accuracy, ranging from the
exact centroid of the feature at creation, a very large S2 Cell, or even being
completely randomized for locationless features. Cell ids have the nice
property that they follow a space-filling curve over the surface of the earth.
(See s2cellid.h for details.) WARNING: Clients should only use cell IDs to
perform spatial locality optimizations. There is no strict guarantee that the
cell ID of a feature is related to the current geometry of the feature in any
way.
Corresponds to the JSON property cellId
694 695 696 |
# File 'lib/google/apis/civicinfo_v2/classes.rb', line 694 def cell_id @cell_id end |
#fprint ⇒ Fixnum
A 64-bit fingerprint used to identify features. Most clients should rely on
MapFacts or OneRing to choose fingerprints. If creating new fprints, the
strategy should be chosen so that the chance of collision is remote or non-
existent, and the distribution should be reasonably uniform. For example, if
the source data assigns unique ids to features, then a fingerprint of the
provider name, version, and source id is sufficient.
Corresponds to the JSON property fprint
704 705 706 |
# File 'lib/google/apis/civicinfo_v2/classes.rb', line 704 def fprint @fprint end |
#temporary_data ⇒ Google::Apis::CivicinfoV2::MessageSet
This is proto2's version of MessageSet.
Corresponds to the JSON property temporaryData
709 710 711 |
# File 'lib/google/apis/civicinfo_v2/classes.rb', line 709 def temporary_data @temporary_data end |
Instance Method Details
#update!(**args) ⇒ Object
Update properties of this object
716 717 718 719 720 |
# File 'lib/google/apis/civicinfo_v2/classes.rb', line 716 def update!(**args) @cell_id = args[:cell_id] if args.key?(:cell_id) @fprint = args[:fprint] if args.key?(:fprint) @temporary_data = args[:temporary_data] if args.key?(:temporary_data) end |