Module classical_atlas.location
This module represents a Pleiades location.
Notes
"Locations in Pleiades connect places to coordinates in space. A location identifies a specific area of interest on the earth’s surface that is associated with a place during a particular date range. A place can contain multiple locations. Locations, on the other hand, are associated with one and only one place. Depending on the state of the evidence, the association between location and place may vary in certainty; some places, attested by name in ancient sources, may have no associated location at all because modern scholarship cannot pinpoint reliably the ancient site or area in question."
Notes from https://pleiades.stoa.org/help/conceptual-overview.
Expand source code
"""This module represents a Pleiades location.
Notes
-----
"Locations in Pleiades connect places to coordinates in space. A location identifies a specific area of interest on
the earth’s surface that is associated with a place during a particular date range. A place can contain multiple
locations. Locations, on the other hand, are associated with one and only one place. Depending on the state of the
evidence, the association between location and place may vary in certainty; some places, attested by name in ancient
sources, may have no associated location at all because modern scholarship cannot pinpoint reliably the ancient site
or area in question."
Notes from https://pleiades.stoa.org/help/conceptual-overview.
"""
class Location:
"""Represents a Pleiades location.
Parameters
----------
location_data : dictionary
Section of JSON file relevant to Location objects, parsed as dictionary
Attributes
----------
geometric_type
coordinates
time_periods
confidence_metrics
attestations
location_id
location_feature_type_uri
start_date
end_date
title
archaeological_remains
location_details
location_accuracy_value
location_accuracy_info
location_feature_type
location_description
location_type
location_uri
Methods
-------
print_attestations()
Print formatted list of temporal attestations
print_time_periods_info()
Print information about time periods
print_confidence_metrics_info()
Print information about confidence metrics
report(detail='short')
Print a summary of information about this location
"""
def __init__(self, location_data):
self._time_periods = {}
self._confidence_metrics = {}
self._attestations = []
self._location_id = None
self._location_feature_type = None
self._location_feature_type_uri = None
self._start_date = None
self._end_date = None
self._title = None
self._archaeologicalRemains = None
self._location_details = None
self._accuracy_info = None
self._location_accuracy_value = None
self._location_featureType = None
self._location_description = None
self._location_locationType = None
self._location_uri = None
self._geometric_type = None
self._location_coordinates = []
if location_data['attestations']:
for attestation in range(len(location_data['attestations'])):
time_period = location_data['attestations'][attestation]['timePeriod']
time_period_uri = location_data['attestations'][attestation]['timePeriodURI']
confidence = location_data['attestations'][attestation]['confidence']
confidence_uri = location_data['attestations'][attestation]['confidenceURI']
if time_period not in self._time_periods.keys():
self._time_periods[time_period] = time_period_uri
if confidence not in self.confidence_metrics.keys():
self._confidence_metrics[confidence] = confidence_uri
self._attestations.append([time_period, confidence])
if location_data['id']:
self._location_id = location_data['id']
if location_data['featureTypeURI'] and location_data['featureTypeURI'][0]:
self._location_feature_type = location_data['featureType'][0]
self._location_feature_type_uri = location_data['featureTypeURI'][0]
if location_data['start']:
self._start_date = location_data['start']
if location_data['end']:
self._end_date = location_data['end']
if location_data['title']:
self._title = location_data['title']
if location_data['archaeologicalRemains']:
self._archaeologicalRemains = location_data['archaeologicalRemains']
if location_data['details']:
self._location_details = location_data['details']
if location_data['accuracy_value']:
self._location_accuracy_value = location_data['accuracy_value']
if location_data['accuracy']:
self._accuracy_info = location_data['accuracy']
if location_data['description']:
self._location_description = location_data['description']
if location_data['locationType'] and location_data['locationType'][0]:
self._location_locationType = location_data['locationType'][0]
if location_data['uri']:
self._location_uri = location_data['uri']
if location_data['geometry'] and location_data['geometry']['type']:
self._geometric_type = location_data['geometry']['type']
if location_data['geometry'] and location_data['geometry']['coordinates']:
if len(location_data['geometry']['coordinates']) > 1: # only one set of coordinates
self._location_coordinates.append(location_data['geometry']['coordinates'])
elif len(location_data['geometry']['coordinates'][0]) > 1:
for coordinate in location_data['geometry']['coordinates'][0]:
self._location_coordinates.append(coordinate)
else:
for coordinate in location_data['geometry']['coordinates'][0][0]:
self._location_coordinates.append(coordinate)
@property
def geometric_type(self):
"""Spatial geometry of a particular location (`string`)"""
return self._geometric_type
@property
def coordinates(self):
"""List of geographic coordinates relevant to a location (`list`)"""
return self._location_coordinates
@property
def time_periods(self):
"""Time periods and associated informational uris (`dictionary`)"""
return self._time_periods
@property
def confidence_metrics(self):
"""Confidence metrics and associated informational uris (`dictionary`)"""
return self._confidence_metrics
@property
def attestations(self):
"""Temporal attestations and associated confidence values for a location (`dictionary`)"""
return self._attestations
@property
def location_id(self):
"""Unique identifier for this location (`string`)"""
return self._location_id
@property
def location_feature_type_uri(self):
"""Info link for deprecated attribute (`string`)"""
return self._location_feature_type_uri
@property
def start_date(self):
"""The minimum date (decimal CE year) of any attested time period (`int`)"""
return self._start_date
@property
def end_date(self):
"""The maximum date (decimal CE year) of any attested time period (`int`)"""
return self._end_date
@property
def title(self):
"""Title of location (`string`)"""
if self._title is None:
return self._location_id
return self._title
@property
def archaeological_remains(self):
"""Attribute indicating whether archaeological remains are known to be visible at a particular location and,
if so, how substantive they are (`string`)
"""
return self._archaeologicalRemains
@property
def location_details(self):
"""English-language text providing discussion of a location above and beyond that included in the
“description (`string`)”
"""
return self._location_details
@property
def location_accuracy_value(self):
"""Pleiades provided accuracy value for a location (`float`)"""
return self._location_accuracy_value
@property
def location_accuracy_info(self):
"""URL for information about provided accuracy value (`string`)"""
return self._accuracy_info
@property
def location_feature_type(self):
"""Deprecated attribute (`string`)"""
return self._location_featureType
@property
def location_description(self):
"""Text description of this location (`string`)"""
return self._location_description
@property
def location_type(self):
"""Location category within Pleiades database (`string`)
Limited to 'associated modern,' 'central point', 'legacy,' 'representative,' and 'relocated modern.'
"""
return self._location_locationType
@property
def location_uri(self):
"""Pleiades URI for this location (`string`)"""
return self._location_uri
def print_attestations(self):
"""Print formatted list of temporal attestations."""
print("Temporal attestations for " + self.title + ":")
for attestation in self.attestations:
print(attestation[0] + ", " + attestation[1])
def print_time_periods_info(self):
"""Print information about time periods."""
print("Time periods relevant to " + self.title + ":")
for time_period in self.time_periods.keys():
print("--- " + str(time_period) + " ---")
print(self.time_periods[time_period])
def print_confidence_metrics_info(self):
"""Print information about confidence metrics."""
print("Confidence metrics relevant to " + self.title + ":")
for metric in self.confidence_metrics.keys():
print("--- " + str(metric) + " ---")
print(self.confidence_metrics[metric])
def report(self, detail='short'):
"""Print a summary of information about this location.
Parameters
----------
detail : {'short', 'long'}
about of detail to include in summary
"""
print("Title: " + str(self.title))
print("ID: " + str(self.location_id))
print("URI: " + str(self.location_uri))
print("Date range: " + str(self.start_date) + " - " + str(self.end_date))
print("Description: " + str(self.location_description))
if detail == 'long':
print("Details: " + str(self.location_details))
# print("Feature type: " + str(self.location_feature_type))
print("Archaeological remains: " + str(self.archaeological_remains))
print("Accuracy value: " + str(self.location_accuracy_value))
print("Location type: " + str(self.location_type))
print("Temporal attestations: ")
for att in self.attestations:
print(" " + str(att[0]) + ", " + str(att[1]))
if detail == 'long':
print("Geometric type: " + str(self.geometric_type))
print("Coordinates: ")
for coord in self.coordinates:
print(" " + str(coord))
Classes
class Location (location_data)
-
Represents a Pleiades location.
Parameters
location_data
:dictionary
- Section of JSON file relevant to Location objects, parsed as dictionary
Attributes
geometric_type
coordinates
time_periods
confidence_metrics
attestations
location_id
location_feature_type_uri
start_date
end_date
title
archaeological_remains
location_details
location_accuracy_value
location_accuracy_info
location_feature_type
location_description
location_type
location_uri
Methods
print_attestations() Print formatted list of temporal attestations print_time_periods_info() Print information about time periods print_confidence_metrics_info() Print information about confidence metrics report(detail='short') Print a summary of information about this location
Expand source code
class Location: """Represents a Pleiades location. Parameters ---------- location_data : dictionary Section of JSON file relevant to Location objects, parsed as dictionary Attributes ---------- geometric_type coordinates time_periods confidence_metrics attestations location_id location_feature_type_uri start_date end_date title archaeological_remains location_details location_accuracy_value location_accuracy_info location_feature_type location_description location_type location_uri Methods ------- print_attestations() Print formatted list of temporal attestations print_time_periods_info() Print information about time periods print_confidence_metrics_info() Print information about confidence metrics report(detail='short') Print a summary of information about this location """ def __init__(self, location_data): self._time_periods = {} self._confidence_metrics = {} self._attestations = [] self._location_id = None self._location_feature_type = None self._location_feature_type_uri = None self._start_date = None self._end_date = None self._title = None self._archaeologicalRemains = None self._location_details = None self._accuracy_info = None self._location_accuracy_value = None self._location_featureType = None self._location_description = None self._location_locationType = None self._location_uri = None self._geometric_type = None self._location_coordinates = [] if location_data['attestations']: for attestation in range(len(location_data['attestations'])): time_period = location_data['attestations'][attestation]['timePeriod'] time_period_uri = location_data['attestations'][attestation]['timePeriodURI'] confidence = location_data['attestations'][attestation]['confidence'] confidence_uri = location_data['attestations'][attestation]['confidenceURI'] if time_period not in self._time_periods.keys(): self._time_periods[time_period] = time_period_uri if confidence not in self.confidence_metrics.keys(): self._confidence_metrics[confidence] = confidence_uri self._attestations.append([time_period, confidence]) if location_data['id']: self._location_id = location_data['id'] if location_data['featureTypeURI'] and location_data['featureTypeURI'][0]: self._location_feature_type = location_data['featureType'][0] self._location_feature_type_uri = location_data['featureTypeURI'][0] if location_data['start']: self._start_date = location_data['start'] if location_data['end']: self._end_date = location_data['end'] if location_data['title']: self._title = location_data['title'] if location_data['archaeologicalRemains']: self._archaeologicalRemains = location_data['archaeologicalRemains'] if location_data['details']: self._location_details = location_data['details'] if location_data['accuracy_value']: self._location_accuracy_value = location_data['accuracy_value'] if location_data['accuracy']: self._accuracy_info = location_data['accuracy'] if location_data['description']: self._location_description = location_data['description'] if location_data['locationType'] and location_data['locationType'][0]: self._location_locationType = location_data['locationType'][0] if location_data['uri']: self._location_uri = location_data['uri'] if location_data['geometry'] and location_data['geometry']['type']: self._geometric_type = location_data['geometry']['type'] if location_data['geometry'] and location_data['geometry']['coordinates']: if len(location_data['geometry']['coordinates']) > 1: # only one set of coordinates self._location_coordinates.append(location_data['geometry']['coordinates']) elif len(location_data['geometry']['coordinates'][0]) > 1: for coordinate in location_data['geometry']['coordinates'][0]: self._location_coordinates.append(coordinate) else: for coordinate in location_data['geometry']['coordinates'][0][0]: self._location_coordinates.append(coordinate) @property def geometric_type(self): """Spatial geometry of a particular location (`string`)""" return self._geometric_type @property def coordinates(self): """List of geographic coordinates relevant to a location (`list`)""" return self._location_coordinates @property def time_periods(self): """Time periods and associated informational uris (`dictionary`)""" return self._time_periods @property def confidence_metrics(self): """Confidence metrics and associated informational uris (`dictionary`)""" return self._confidence_metrics @property def attestations(self): """Temporal attestations and associated confidence values for a location (`dictionary`)""" return self._attestations @property def location_id(self): """Unique identifier for this location (`string`)""" return self._location_id @property def location_feature_type_uri(self): """Info link for deprecated attribute (`string`)""" return self._location_feature_type_uri @property def start_date(self): """The minimum date (decimal CE year) of any attested time period (`int`)""" return self._start_date @property def end_date(self): """The maximum date (decimal CE year) of any attested time period (`int`)""" return self._end_date @property def title(self): """Title of location (`string`)""" if self._title is None: return self._location_id return self._title @property def archaeological_remains(self): """Attribute indicating whether archaeological remains are known to be visible at a particular location and, if so, how substantive they are (`string`) """ return self._archaeologicalRemains @property def location_details(self): """English-language text providing discussion of a location above and beyond that included in the “description (`string`)” """ return self._location_details @property def location_accuracy_value(self): """Pleiades provided accuracy value for a location (`float`)""" return self._location_accuracy_value @property def location_accuracy_info(self): """URL for information about provided accuracy value (`string`)""" return self._accuracy_info @property def location_feature_type(self): """Deprecated attribute (`string`)""" return self._location_featureType @property def location_description(self): """Text description of this location (`string`)""" return self._location_description @property def location_type(self): """Location category within Pleiades database (`string`) Limited to 'associated modern,' 'central point', 'legacy,' 'representative,' and 'relocated modern.' """ return self._location_locationType @property def location_uri(self): """Pleiades URI for this location (`string`)""" return self._location_uri def print_attestations(self): """Print formatted list of temporal attestations.""" print("Temporal attestations for " + self.title + ":") for attestation in self.attestations: print(attestation[0] + ", " + attestation[1]) def print_time_periods_info(self): """Print information about time periods.""" print("Time periods relevant to " + self.title + ":") for time_period in self.time_periods.keys(): print("--- " + str(time_period) + " ---") print(self.time_periods[time_period]) def print_confidence_metrics_info(self): """Print information about confidence metrics.""" print("Confidence metrics relevant to " + self.title + ":") for metric in self.confidence_metrics.keys(): print("--- " + str(metric) + " ---") print(self.confidence_metrics[metric]) def report(self, detail='short'): """Print a summary of information about this location. Parameters ---------- detail : {'short', 'long'} about of detail to include in summary """ print("Title: " + str(self.title)) print("ID: " + str(self.location_id)) print("URI: " + str(self.location_uri)) print("Date range: " + str(self.start_date) + " - " + str(self.end_date)) print("Description: " + str(self.location_description)) if detail == 'long': print("Details: " + str(self.location_details)) # print("Feature type: " + str(self.location_feature_type)) print("Archaeological remains: " + str(self.archaeological_remains)) print("Accuracy value: " + str(self.location_accuracy_value)) print("Location type: " + str(self.location_type)) print("Temporal attestations: ") for att in self.attestations: print(" " + str(att[0]) + ", " + str(att[1])) if detail == 'long': print("Geometric type: " + str(self.geometric_type)) print("Coordinates: ") for coord in self.coordinates: print(" " + str(coord))
Instance variables
var archaeological_remains
-
Attribute indicating whether archaeological remains are known to be visible at a particular location and, if so, how substantive they are (
string
)Expand source code
@property def archaeological_remains(self): """Attribute indicating whether archaeological remains are known to be visible at a particular location and, if so, how substantive they are (`string`) """ return self._archaeologicalRemains
var attestations
-
Temporal attestations and associated confidence values for a location (
dictionary
)Expand source code
@property def attestations(self): """Temporal attestations and associated confidence values for a location (`dictionary`)""" return self._attestations
var confidence_metrics
-
Confidence metrics and associated informational uris (
dictionary
)Expand source code
@property def confidence_metrics(self): """Confidence metrics and associated informational uris (`dictionary`)""" return self._confidence_metrics
var coordinates
-
List of geographic coordinates relevant to a location (
list
)Expand source code
@property def coordinates(self): """List of geographic coordinates relevant to a location (`list`)""" return self._location_coordinates
var end_date
-
The maximum date (decimal CE year) of any attested time period (
int
)Expand source code
@property def end_date(self): """The maximum date (decimal CE year) of any attested time period (`int`)""" return self._end_date
var geometric_type
-
Spatial geometry of a particular location (
string
)Expand source code
@property def geometric_type(self): """Spatial geometry of a particular location (`string`)""" return self._geometric_type
var location_accuracy_info
-
URL for information about provided accuracy value (
string
)Expand source code
@property def location_accuracy_info(self): """URL for information about provided accuracy value (`string`)""" return self._accuracy_info
var location_accuracy_value
-
Pleiades provided accuracy value for a location (
float
)Expand source code
@property def location_accuracy_value(self): """Pleiades provided accuracy value for a location (`float`)""" return self._location_accuracy_value
var location_description
-
Text description of this location (
string
)Expand source code
@property def location_description(self): """Text description of this location (`string`)""" return self._location_description
var location_details
-
English-language text providing discussion of a location above and beyond that included in the “description (
string
)”Expand source code
@property def location_details(self): """English-language text providing discussion of a location above and beyond that included in the “description (`string`)” """ return self._location_details
var location_feature_type
-
Deprecated attribute (
string
)Expand source code
@property def location_feature_type(self): """Deprecated attribute (`string`)""" return self._location_featureType
var location_feature_type_uri
-
Info link for deprecated attribute (
string
)Expand source code
@property def location_feature_type_uri(self): """Info link for deprecated attribute (`string`)""" return self._location_feature_type_uri
var location_id
-
Unique identifier for this location (
string
)Expand source code
@property def location_id(self): """Unique identifier for this location (`string`)""" return self._location_id
var location_type
-
Location category within Pleiades database (
string
) Limited to 'associated modern,' 'central point', 'legacy,' 'representative,' and 'relocated modern.'Expand source code
@property def location_type(self): """Location category within Pleiades database (`string`) Limited to 'associated modern,' 'central point', 'legacy,' 'representative,' and 'relocated modern.' """ return self._location_locationType
var location_uri
-
Pleiades URI for this location (
string
)Expand source code
@property def location_uri(self): """Pleiades URI for this location (`string`)""" return self._location_uri
var start_date
-
The minimum date (decimal CE year) of any attested time period (
int
)Expand source code
@property def start_date(self): """The minimum date (decimal CE year) of any attested time period (`int`)""" return self._start_date
var time_periods
-
Time periods and associated informational uris (
dictionary
)Expand source code
@property def time_periods(self): """Time periods and associated informational uris (`dictionary`)""" return self._time_periods
var title
-
Title of location (
string
)Expand source code
@property def title(self): """Title of location (`string`)""" if self._title is None: return self._location_id return self._title
Methods
def print_attestations(self)
-
Print formatted list of temporal attestations.
Expand source code
def print_attestations(self): """Print formatted list of temporal attestations.""" print("Temporal attestations for " + self.title + ":") for attestation in self.attestations: print(attestation[0] + ", " + attestation[1])
def print_confidence_metrics_info(self)
-
Print information about confidence metrics.
Expand source code
def print_confidence_metrics_info(self): """Print information about confidence metrics.""" print("Confidence metrics relevant to " + self.title + ":") for metric in self.confidence_metrics.keys(): print("--- " + str(metric) + " ---") print(self.confidence_metrics[metric])
def print_time_periods_info(self)
-
Print information about time periods.
Expand source code
def print_time_periods_info(self): """Print information about time periods.""" print("Time periods relevant to " + self.title + ":") for time_period in self.time_periods.keys(): print("--- " + str(time_period) + " ---") print(self.time_periods[time_period])
def report(self, detail='short')
-
Print a summary of information about this location.
Parameters
detail
:{'short', 'long'}
- about of detail to include in summary
Expand source code
def report(self, detail='short'): """Print a summary of information about this location. Parameters ---------- detail : {'short', 'long'} about of detail to include in summary """ print("Title: " + str(self.title)) print("ID: " + str(self.location_id)) print("URI: " + str(self.location_uri)) print("Date range: " + str(self.start_date) + " - " + str(self.end_date)) print("Description: " + str(self.location_description)) if detail == 'long': print("Details: " + str(self.location_details)) # print("Feature type: " + str(self.location_feature_type)) print("Archaeological remains: " + str(self.archaeological_remains)) print("Accuracy value: " + str(self.location_accuracy_value)) print("Location type: " + str(self.location_type)) print("Temporal attestations: ") for att in self.attestations: print(" " + str(att[0]) + ", " + str(att[1])) if detail == 'long': print("Geometric type: " + str(self.geometric_type)) print("Coordinates: ") for coord in self.coordinates: print(" " + str(coord))