Module classical_atlas.pleiad

Module to represent a Pleiades place.

Notes

"Pleiades places are the primary organizational construct of the gazetteer. They are conceptual entities: the term "place" applies to any locus of human attention, material or intellectual, in a real-world geographic context. A settlement mentioned in an ancient text is a place, whether or not it can now be located; an archaeological site is a place; a modern city located atop an ancient settlement is a place. Basically, any spatial feature that is connected to the pre-modern past and that a human being has noticed and discussed as such between the past and the present is a place.

Places in Pleiades can therefore represent:

  • areas of fairly intensive human activity like settlements and sanctuaries;

  • large-scale geological features known in antiquity like mountains, rivers, lakes;

  • political, social, or cultural constructs like provinces and mining districts;

  • individual structures, when they have been referred to individually by ancient sources or modern scholars (e.g., the Parthenon, the Queen’s Megaron at Knossos, the Basilica Iulia, the House of the Faun); and

  • Spatial extents or thematic groupings of places defined by modern scholars or administrative entities for purposes of analysis, description, reference, or heritage management (e.g., the Aswan Quarry Landscape, or the Archaeological Border complex of Hedeby and the Danevirke) Pleiades recognizes a variety of place categories or types; new categories can be added as needed by the editorial college.

Places are entirely abstract, conceptual entities. They are objects of thought, speech, or writing, not tangible, mappable points on the earth’s surface. They have no spatial or temporal attributes of their own. A place can exist in name only in an ancient source, without any material correlate; conversely, an archaeological site can exist as a place without an ancient name.

The spatial aspects of Pleiades places (i.e., latitude and longitude coordinates in space), as well as their ancient and modern names, are addressed through two other conceptual entities: locations and names. Connections are used to express and document relationships between different places. Temporal characteristics and bibliographical references are recorded at the name, location, and connection levels as appropriate."

Notes from https://pleiades.stoa.org/help/conceptual-overview.

Note also that this class excludes the deprecated (as of 2010) Pleiades 'features' that are linked to places. The features container remains in the available Pleiades dataset to preserve spatial metadata. The intent of the place-location-name distinction makes features containers irrelevant.

Expand source code
"""Module to represent a Pleiades place.

Notes
-----
"Pleiades places are the primary organizational construct of the gazetteer. They are conceptual entities: the term
"place" applies to any locus of human attention, material or intellectual, in a real-world geographic context. A
settlement mentioned in an ancient text is a place, whether or not it can now be located; an archaeological site is a
place; a modern city located atop an ancient settlement is a place. Basically, any spatial feature that is connected
to the pre-modern past and that a human being has noticed and discussed as such between the past and the present is a
place.

Places in Pleiades can therefore represent:

* areas of fairly intensive human activity like settlements and sanctuaries;

* large-scale geological features known in antiquity like mountains, rivers, lakes;

* political, social, or cultural constructs like provinces and mining districts;

* individual structures, when they have been referred to individually by ancient sources or modern scholars (e.g.,
the Parthenon, the Queen’s Megaron at Knossos, the Basilica Iulia, the House of the Faun); and

* Spatial extents or thematic groupings of places defined by modern scholars or administrative entities for purposes of
analysis, description, reference, or heritage management (e.g., the Aswan Quarry Landscape, or the Archaeological
Border complex of Hedeby and the Danevirke) Pleiades recognizes a variety of place categories or types; new
categories can be added as needed by the editorial college.

Places are entirely abstract, conceptual entities. They are objects of thought, speech, or writing, not tangible,
mappable points on the earth’s surface. They have no spatial or temporal attributes of their own. A place can exist
in name only in an ancient source, without any material correlate; conversely, an archaeological site can exist as a
place without an ancient name.

The spatial aspects of Pleiades places (i.e., latitude and longitude coordinates in space), as well as their ancient
and modern names, are addressed through two other conceptual entities: locations and names. Connections are used to
express and document relationships between different places. Temporal characteristics and bibliographical references
are recorded at the name, location, and connection levels as appropriate."

Notes from https://pleiades.stoa.org/help/conceptual-overview.

Note also that this class excludes the deprecated (as of 2010) Pleiades 'features' that are linked to places.
The features container remains in the available Pleiades dataset to preserve spatial metadata.
The intent of the place-location-name distinction makes features containers irrelevant.
"""

from name import Name
from location import Location


class Pleiad:
    """
    A class to represent a single place from Pleiades.

    Attributes
    ----------
    locations
    title
    names
    location_types_info
    connections
    subjects
    place_types
    association_certainty_info
    description
    provenance
    details
    type
    min_longitude
    min_latitude
    max_longitude
    max_latitude
    representative_point
    uri
    id

    Methods
    -------

    Information about the other attributes in the object may be found in the Pleiades documentation:
    https://pleiades.stoa.org/downloads
    """
    def __init__(self, data):
        # initialization
        self._locations = {}
        self._names = {}
        self._location_types = {}
        self._connections = {}
        self._subjects = []
        self._place_types = []
        self._association_certainty_types = {}
        self._id = None
        self._uri = None
        self._description = None
        self._title = None
        self._provenance = None
        self._details = None
        self._type = None
        self._min_longitude = None
        self._min_latitude = None
        self._max_longitude = None
        self._max_latitude = None
        self._representative_point = None
        # locations
        if data['locations'] and data['locations'][0]:
            if type(data['locations'][0]) == 'dict':  # more than one associated location.py
                for l in data['locations']:
                    current = Location(data['locations'][l])
                    if data['locations'][l]['associationCertainty']:
                        if data['locations'][l]['associationCertainty'] not in self._association_certainty_types.keys():
                            self._association_certainty_types[data['locations'][l]['associationCertainty']] = data['locations'][0]['associationCertaintyURI']
                        self._locations[current] = data['locations'][l]['associationCertainty']
                    else:
                        self._locations[current] = "None"
                    if data['locations'][l]['featureTypeURI'] and data['locations'][l]['featureTypeURI'][0]:
                        location_type = data['locations'][l]['featureType'][0]
                        location_type_uri = data['locations'][l]['featureTypeURI'][0]
                        if location_type not in self._location_types.keys():
                            self._location_types[location_type] = location_type_uri
            else:
                current = Location(data['locations'][0])
                if data['locations'][0]['associationCertainty']:
                    if data['locations'][0]['associationCertainty'] not in self._association_certainty_types.keys():
                        self._association_certainty_types[data['locations'][0]['associationCertainty']] = \
                            data['locations'][0]['associationCertaintyURI']
                    self._locations[current] = data['locations'][0]['associationCertainty']
                else:
                    self._locations[current] = "None"
                if data['locations'][0]['featureTypeURI'] and data['locations'][0]['featureTypeURI'][0]:
                    location_type = data['locations'][0]['featureType'][0]
                    location_type_uri = data['locations'][0]['featureTypeURI'][0]
                    if location_type not in self._location_types.keys():
                        self._location_types[location_type] = location_type_uri
        # connections
        if data['connections'] and data['connections'][0]:
            for item in data['connections']:
                self._connections[item['id']] = [item['connectionType'], item['title'], item['start'], item['end']]
        # names
        if data['names'] and data['names'][0]:
            if type(data['names'][0]) == 'dict':  # more than one associated name
                for n in data['names']:
                    current = Name(data['names'][n])
                    if data['names'][n]['associationCertainty']:
                        if data['names'][n]['associationCertainty'] not in self._association_certainty_types.keys():
                            self._association_certainty_types[data['names'][n]['associationCertainty']] = data['names'][0]['associationCertaintyURI']
                        self._names[current] = data['names'][n]['associationCertainty']
                    else:
                        self._names[current] = "None"
            else:
                current = Name(data['names'][0])
                if data['names'][0]['associationCertainty']:
                    if data['names'][0]['associationCertainty'] not in self._association_certainty_types.keys():
                        self._association_certainty_types[data['names'][0]['associationCertainty']] = \
                            data['names'][0]['associationCertaintyURI']
                    self._names[current] = data['names'][0]['associationCertainty']
                else:
                    self._names[current] = "None"
        # general
        if data['id']:
            self._id = data['id']
        if data['subject'] and data['subject'][0]:
            for subject in data['subject']:
                self._subjects.append(subject)
        if data['title']:
            self._title = data['title']
        if data['provenance']:
            self._provenance = data['provenance']
        if data['details']:
            self._details = data['details']
        if data['type']:
            self._type = data['type']
        if data['uri']:
            self._uri = data['uri']
        if data['description']:
            self._description = data['description']

        if data['placeTypes'] and data['placeTypes'][0]:
            for place_type in data['placeTypes']:
                self._place_types.append(place_type)

        if data['bbox'] and data['bbox'][0]:
            self._min_longitude = data['bbox'][0]
            self._min_latitude = data['bbox'][1]
            self._max_longitude = data['bbox'][2]
            self._max_latitude = data['bbox'][3]

        if data['reprPoint'] and data['reprPoint'][0]:
            self._representative_point = data['reprPoint']

    # Properties #

    @property
    def locations(self):
        """Maps associated locations to certainty of association (`dictionary`)"""
        return self._locations

    @property
    def title(self):
        """Title included in a place's metadata in Pleiades (`string`)"""
        return self._title

    @property
    def names(self):
        """Maps associated names to certainty of association ('dictionary')"""
        return self._names

    @property
    def location_types_info(self):
        """Information about the types of associated locations (`dictionary`)"""
        return self._location_types

    @property
    def connections(self):
        """Information about connections between this place and another (`dictionary`)"""
        return self._connections

    @property
    def subjects(self):
        """List of subjects relevant to this place (`list`)"""
        return self._subjects

    @property
    def place_types(self):
        """Place types associated with a place (`list`)"""
        return self._place_types

    @property
    def association_certainty_info(self):
        """Maps certainty types to corresponding information (`dictionary`)"""
        return self._association_certainty_types

    @property
    def description(self):
        """Text description of a place (`string`)"""
        return self._description

    @property
    def provenance(self):
        """Provenance of information about this place (`string`)"""
        return self._provenance

    @property
    def details(self):
        """Details about a place above and beyond information in the description (`string`)"""
        return self._details

    @property
    def type(self):
        """Deprecated place type variable (`string`)"""
        return self._type

    @property
    def min_longitude(self):
        """Minimum longitude of bounding box (`float`)"""
        return self._min_longitude

    @property
    def min_latitude(self):
        """Minimum latitude of bounding box (`float`)"""
        return self._min_latitude

    @property
    def max_longitude(self):
        """Maximum longitude of bounding box (`float`)"""
        return self._max_longitude

    @property
    def max_latitude(self):
        """Maximum latitude of bounding box (`float`)"""
        return self._max_latitude

    @property
    def representative_point(self):
        """Representative point of latitude and longitude (`list`)"""
        return self._representative_point

    @property
    def uri(self):
        """Stable Pleiades uri for a place (`string`)"""
        return self._uri

    @property
    def id(self):
        """Unique identifier for a place (`string`)"""
        return self._id

    # access methods
    def get_bbox(self):
        """Access bounding box of geographic coordinates

        Returns
        -------
        list
            bounding box of geographic coordinates
        """
        return [self.min_latitude, self.min_longitude, self.max_latitude, self.max_longitude]

    def earliest_date(self):
        """Return earliest known date of any associated location

        Returns
        -------
        int
            Earliest known date of any associated location
        """
        earliest = 3000
        for location in self.locations.keys():
            if location.start_date < earliest:
                earliest = location.start_date
        return earliest

    def latest_date(self):
        """Return latest known date of any associated location

        Returns
        -------
        int
            latest known date of any associated location
        """
        latest = -10000
        for location in self.locations.keys():
            if location.end_date > latest:
                latest = location.end_date
        return latest

    def get_list_of_locations(self):
        """
        Return list of titles of associated locations

        Returns
        -------
        list
            titles of associated locations
        """
        locations = []
        for location in self.locations.keys():
            locations.append(location.title)
        return locations

    def get_location_ids(self):
        """
        Return list of ids of associated locations

        Returns
        -------
        list
            ids of associated locations
        """
        location_ids = []
        for location in self.locations.keys():
            location_ids.append(location.location_id)
        return location_ids

    def get_list_of_names(self):
        """
        Return list of names associated with a place

        Returns
        -------
        list
            names associated with a place
        """
        names_list = []
        for name in self.names.keys():
            names_list.append(name.romanized_name)
        return names_list

    def get_name_ids(self):
        """
        Return list of ids of associated names

        Returns
        -------
        list
            ids of associated names
        """
        name_ids = []
        for name in self.names.keys():
            name_ids.append(name.name_id)
        return name_ids

    # info methods
    def __str__(self):
        p = self.title + " (" + self.description + ")"
        return p

    def print_location_types_info(self):
        """Print explanations for location types."""
        print("Location types relevant to " + self.title + ":")
        for location_type in self.location_types_info.keys():
            print("--- " + str(location_type) + " ---")
            print(self.location_types_info[location_type])

    def print_association_certainty_info(self):
        """Print explanations for association certainties"""
        print("Explanation of association certainties relevant to " + self.title + ":")
        for certainty_type in self.association_certainty_info.keys():
            print("--- " + str(certainty_type) + " ---")
            print(self.association_certainty_info[certainty_type])

    def print_coordinate_info(self):
        """Print information about geographic coordinates associated with a place"""
        print("Representative point: " + str(self.representative_point))
        print("Minimum latitude: " + str(self.min_latitude))
        print("Minimum longitude: " + str(self.min_longitude))
        print("Maximum latitude: " + str(self.max_latitude))
        print("Maximum longitude: " + str(self.max_longitude))

    def print_locations(self):
        """Print summary of titles of locations associated with a place"""
        print("Locations relevant to " + self.title + ":")
        for location in self.locations.keys():
            print("     " + str(location.title) + " (" + str(location.start_date) + ", " + str(location.end_date) + ")")

    def print_location_association_certainties(self):
        """Print summary of locations and association certainties"""
        print("Locations and association certainties relevant to " + self.title + ":")
        for location in self.locations.keys():
            print("     " + location.title + ", " + str(self.locations[location]))

    def print_subjects(self):
        """Print list of relevant subjects"""
        pr = "Subjects relevant to : " + self.title + ": "
        for subject in self.subjects:
            pr = pr + subject + ", "
        print(pr[:-2])

    def print_connections(self):
        """Print list of connections and relevant information"""
        print("Connections relevant to " + self.title + ":")
        for connection in self.connections.keys():
            c_type = self.connections[connection][0]
            c_title = self.connections[connection][1]
            c_start = self.connections[connection][2]
            c_end = self.connections[connection][3]
            print(c_title + " (id: " + str(connection) + "): ")
            print("     connection type: " + str(c_type))
            print("     date range: " + str(c_start) + ", " + str(c_end))

    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("Description : " + str(self.description))
        print("Representative point : " + str(self.representative_point))
        print("ID : " + self.id)
        print("uri : " + str(self.uri))
        print("Place types: ")
        for item in self.place_types:
            print(" - " + str(item))
        if detail == 'long':
            print("Provenance : " + str(self.provenance))
            print("Details : " + str(self.details))
            print("Type : " + str(self.type))
            print("Minimum longitude : " + str(self.min_longitude))
            print("Minimum latitude : " + str(self.min_latitude))
            print("Maximum longitude : " + str(self.max_longitude))
            print("Maximum latitude : " + str(self.max_latitude))
            print("Subjects: ")
            for item in self.subjects:
                print(" - " + str(item))
        print("Locations: ")
        for location in self.locations.keys():
            print(" - " + str(location.title) + ", " + str(location.start_date) + "-" + str(location.end_date) + ", " + str(self.locations[location]))
        print("Connections: ")
        for item in self.connections.keys():
            print(" - " + item + ": " + str(self.connections[item]))
        print("Names: ")
        for item in self.names:
            print(" - " + str(item))

    def place_type_info(self):
        print(self.place_types)
        print("https://pleiades.stoa.org/vocabularies/place-types")

Classes

class Pleiad (data)

A class to represent a single place from Pleiades.

Attributes

locations
 
title
 
names
 
location_types_info
 
connections
 
subjects
 
place_types
 
association_certainty_info
 
description
 
provenance
 
details
 
type
 
min_longitude
 
min_latitude
 
max_longitude
 
max_latitude
 
representative_point
 
uri
 
id
 

Methods

Information about the other attributes in the object may be found in the Pleiades documentation: https://pleiades.stoa.org/downloads

Expand source code
class Pleiad:
    """
    A class to represent a single place from Pleiades.

    Attributes
    ----------
    locations
    title
    names
    location_types_info
    connections
    subjects
    place_types
    association_certainty_info
    description
    provenance
    details
    type
    min_longitude
    min_latitude
    max_longitude
    max_latitude
    representative_point
    uri
    id

    Methods
    -------

    Information about the other attributes in the object may be found in the Pleiades documentation:
    https://pleiades.stoa.org/downloads
    """
    def __init__(self, data):
        # initialization
        self._locations = {}
        self._names = {}
        self._location_types = {}
        self._connections = {}
        self._subjects = []
        self._place_types = []
        self._association_certainty_types = {}
        self._id = None
        self._uri = None
        self._description = None
        self._title = None
        self._provenance = None
        self._details = None
        self._type = None
        self._min_longitude = None
        self._min_latitude = None
        self._max_longitude = None
        self._max_latitude = None
        self._representative_point = None
        # locations
        if data['locations'] and data['locations'][0]:
            if type(data['locations'][0]) == 'dict':  # more than one associated location.py
                for l in data['locations']:
                    current = Location(data['locations'][l])
                    if data['locations'][l]['associationCertainty']:
                        if data['locations'][l]['associationCertainty'] not in self._association_certainty_types.keys():
                            self._association_certainty_types[data['locations'][l]['associationCertainty']] = data['locations'][0]['associationCertaintyURI']
                        self._locations[current] = data['locations'][l]['associationCertainty']
                    else:
                        self._locations[current] = "None"
                    if data['locations'][l]['featureTypeURI'] and data['locations'][l]['featureTypeURI'][0]:
                        location_type = data['locations'][l]['featureType'][0]
                        location_type_uri = data['locations'][l]['featureTypeURI'][0]
                        if location_type not in self._location_types.keys():
                            self._location_types[location_type] = location_type_uri
            else:
                current = Location(data['locations'][0])
                if data['locations'][0]['associationCertainty']:
                    if data['locations'][0]['associationCertainty'] not in self._association_certainty_types.keys():
                        self._association_certainty_types[data['locations'][0]['associationCertainty']] = \
                            data['locations'][0]['associationCertaintyURI']
                    self._locations[current] = data['locations'][0]['associationCertainty']
                else:
                    self._locations[current] = "None"
                if data['locations'][0]['featureTypeURI'] and data['locations'][0]['featureTypeURI'][0]:
                    location_type = data['locations'][0]['featureType'][0]
                    location_type_uri = data['locations'][0]['featureTypeURI'][0]
                    if location_type not in self._location_types.keys():
                        self._location_types[location_type] = location_type_uri
        # connections
        if data['connections'] and data['connections'][0]:
            for item in data['connections']:
                self._connections[item['id']] = [item['connectionType'], item['title'], item['start'], item['end']]
        # names
        if data['names'] and data['names'][0]:
            if type(data['names'][0]) == 'dict':  # more than one associated name
                for n in data['names']:
                    current = Name(data['names'][n])
                    if data['names'][n]['associationCertainty']:
                        if data['names'][n]['associationCertainty'] not in self._association_certainty_types.keys():
                            self._association_certainty_types[data['names'][n]['associationCertainty']] = data['names'][0]['associationCertaintyURI']
                        self._names[current] = data['names'][n]['associationCertainty']
                    else:
                        self._names[current] = "None"
            else:
                current = Name(data['names'][0])
                if data['names'][0]['associationCertainty']:
                    if data['names'][0]['associationCertainty'] not in self._association_certainty_types.keys():
                        self._association_certainty_types[data['names'][0]['associationCertainty']] = \
                            data['names'][0]['associationCertaintyURI']
                    self._names[current] = data['names'][0]['associationCertainty']
                else:
                    self._names[current] = "None"
        # general
        if data['id']:
            self._id = data['id']
        if data['subject'] and data['subject'][0]:
            for subject in data['subject']:
                self._subjects.append(subject)
        if data['title']:
            self._title = data['title']
        if data['provenance']:
            self._provenance = data['provenance']
        if data['details']:
            self._details = data['details']
        if data['type']:
            self._type = data['type']
        if data['uri']:
            self._uri = data['uri']
        if data['description']:
            self._description = data['description']

        if data['placeTypes'] and data['placeTypes'][0]:
            for place_type in data['placeTypes']:
                self._place_types.append(place_type)

        if data['bbox'] and data['bbox'][0]:
            self._min_longitude = data['bbox'][0]
            self._min_latitude = data['bbox'][1]
            self._max_longitude = data['bbox'][2]
            self._max_latitude = data['bbox'][3]

        if data['reprPoint'] and data['reprPoint'][0]:
            self._representative_point = data['reprPoint']

    # Properties #

    @property
    def locations(self):
        """Maps associated locations to certainty of association (`dictionary`)"""
        return self._locations

    @property
    def title(self):
        """Title included in a place's metadata in Pleiades (`string`)"""
        return self._title

    @property
    def names(self):
        """Maps associated names to certainty of association ('dictionary')"""
        return self._names

    @property
    def location_types_info(self):
        """Information about the types of associated locations (`dictionary`)"""
        return self._location_types

    @property
    def connections(self):
        """Information about connections between this place and another (`dictionary`)"""
        return self._connections

    @property
    def subjects(self):
        """List of subjects relevant to this place (`list`)"""
        return self._subjects

    @property
    def place_types(self):
        """Place types associated with a place (`list`)"""
        return self._place_types

    @property
    def association_certainty_info(self):
        """Maps certainty types to corresponding information (`dictionary`)"""
        return self._association_certainty_types

    @property
    def description(self):
        """Text description of a place (`string`)"""
        return self._description

    @property
    def provenance(self):
        """Provenance of information about this place (`string`)"""
        return self._provenance

    @property
    def details(self):
        """Details about a place above and beyond information in the description (`string`)"""
        return self._details

    @property
    def type(self):
        """Deprecated place type variable (`string`)"""
        return self._type

    @property
    def min_longitude(self):
        """Minimum longitude of bounding box (`float`)"""
        return self._min_longitude

    @property
    def min_latitude(self):
        """Minimum latitude of bounding box (`float`)"""
        return self._min_latitude

    @property
    def max_longitude(self):
        """Maximum longitude of bounding box (`float`)"""
        return self._max_longitude

    @property
    def max_latitude(self):
        """Maximum latitude of bounding box (`float`)"""
        return self._max_latitude

    @property
    def representative_point(self):
        """Representative point of latitude and longitude (`list`)"""
        return self._representative_point

    @property
    def uri(self):
        """Stable Pleiades uri for a place (`string`)"""
        return self._uri

    @property
    def id(self):
        """Unique identifier for a place (`string`)"""
        return self._id

    # access methods
    def get_bbox(self):
        """Access bounding box of geographic coordinates

        Returns
        -------
        list
            bounding box of geographic coordinates
        """
        return [self.min_latitude, self.min_longitude, self.max_latitude, self.max_longitude]

    def earliest_date(self):
        """Return earliest known date of any associated location

        Returns
        -------
        int
            Earliest known date of any associated location
        """
        earliest = 3000
        for location in self.locations.keys():
            if location.start_date < earliest:
                earliest = location.start_date
        return earliest

    def latest_date(self):
        """Return latest known date of any associated location

        Returns
        -------
        int
            latest known date of any associated location
        """
        latest = -10000
        for location in self.locations.keys():
            if location.end_date > latest:
                latest = location.end_date
        return latest

    def get_list_of_locations(self):
        """
        Return list of titles of associated locations

        Returns
        -------
        list
            titles of associated locations
        """
        locations = []
        for location in self.locations.keys():
            locations.append(location.title)
        return locations

    def get_location_ids(self):
        """
        Return list of ids of associated locations

        Returns
        -------
        list
            ids of associated locations
        """
        location_ids = []
        for location in self.locations.keys():
            location_ids.append(location.location_id)
        return location_ids

    def get_list_of_names(self):
        """
        Return list of names associated with a place

        Returns
        -------
        list
            names associated with a place
        """
        names_list = []
        for name in self.names.keys():
            names_list.append(name.romanized_name)
        return names_list

    def get_name_ids(self):
        """
        Return list of ids of associated names

        Returns
        -------
        list
            ids of associated names
        """
        name_ids = []
        for name in self.names.keys():
            name_ids.append(name.name_id)
        return name_ids

    # info methods
    def __str__(self):
        p = self.title + " (" + self.description + ")"
        return p

    def print_location_types_info(self):
        """Print explanations for location types."""
        print("Location types relevant to " + self.title + ":")
        for location_type in self.location_types_info.keys():
            print("--- " + str(location_type) + " ---")
            print(self.location_types_info[location_type])

    def print_association_certainty_info(self):
        """Print explanations for association certainties"""
        print("Explanation of association certainties relevant to " + self.title + ":")
        for certainty_type in self.association_certainty_info.keys():
            print("--- " + str(certainty_type) + " ---")
            print(self.association_certainty_info[certainty_type])

    def print_coordinate_info(self):
        """Print information about geographic coordinates associated with a place"""
        print("Representative point: " + str(self.representative_point))
        print("Minimum latitude: " + str(self.min_latitude))
        print("Minimum longitude: " + str(self.min_longitude))
        print("Maximum latitude: " + str(self.max_latitude))
        print("Maximum longitude: " + str(self.max_longitude))

    def print_locations(self):
        """Print summary of titles of locations associated with a place"""
        print("Locations relevant to " + self.title + ":")
        for location in self.locations.keys():
            print("     " + str(location.title) + " (" + str(location.start_date) + ", " + str(location.end_date) + ")")

    def print_location_association_certainties(self):
        """Print summary of locations and association certainties"""
        print("Locations and association certainties relevant to " + self.title + ":")
        for location in self.locations.keys():
            print("     " + location.title + ", " + str(self.locations[location]))

    def print_subjects(self):
        """Print list of relevant subjects"""
        pr = "Subjects relevant to : " + self.title + ": "
        for subject in self.subjects:
            pr = pr + subject + ", "
        print(pr[:-2])

    def print_connections(self):
        """Print list of connections and relevant information"""
        print("Connections relevant to " + self.title + ":")
        for connection in self.connections.keys():
            c_type = self.connections[connection][0]
            c_title = self.connections[connection][1]
            c_start = self.connections[connection][2]
            c_end = self.connections[connection][3]
            print(c_title + " (id: " + str(connection) + "): ")
            print("     connection type: " + str(c_type))
            print("     date range: " + str(c_start) + ", " + str(c_end))

    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("Description : " + str(self.description))
        print("Representative point : " + str(self.representative_point))
        print("ID : " + self.id)
        print("uri : " + str(self.uri))
        print("Place types: ")
        for item in self.place_types:
            print(" - " + str(item))
        if detail == 'long':
            print("Provenance : " + str(self.provenance))
            print("Details : " + str(self.details))
            print("Type : " + str(self.type))
            print("Minimum longitude : " + str(self.min_longitude))
            print("Minimum latitude : " + str(self.min_latitude))
            print("Maximum longitude : " + str(self.max_longitude))
            print("Maximum latitude : " + str(self.max_latitude))
            print("Subjects: ")
            for item in self.subjects:
                print(" - " + str(item))
        print("Locations: ")
        for location in self.locations.keys():
            print(" - " + str(location.title) + ", " + str(location.start_date) + "-" + str(location.end_date) + ", " + str(self.locations[location]))
        print("Connections: ")
        for item in self.connections.keys():
            print(" - " + item + ": " + str(self.connections[item]))
        print("Names: ")
        for item in self.names:
            print(" - " + str(item))

    def place_type_info(self):
        print(self.place_types)
        print("https://pleiades.stoa.org/vocabularies/place-types")

Instance variables

var association_certainty_info

Maps certainty types to corresponding information (dictionary)

Expand source code
@property
def association_certainty_info(self):
    """Maps certainty types to corresponding information (`dictionary`)"""
    return self._association_certainty_types
var connections

Information about connections between this place and another (dictionary)

Expand source code
@property
def connections(self):
    """Information about connections between this place and another (`dictionary`)"""
    return self._connections
var description

Text description of a place (string)

Expand source code
@property
def description(self):
    """Text description of a place (`string`)"""
    return self._description
var details

Details about a place above and beyond information in the description (string)

Expand source code
@property
def details(self):
    """Details about a place above and beyond information in the description (`string`)"""
    return self._details
var id

Unique identifier for a place (string)

Expand source code
@property
def id(self):
    """Unique identifier for a place (`string`)"""
    return self._id
var location_types_info

Information about the types of associated locations (dictionary)

Expand source code
@property
def location_types_info(self):
    """Information about the types of associated locations (`dictionary`)"""
    return self._location_types
var locations

Maps associated locations to certainty of association (dictionary)

Expand source code
@property
def locations(self):
    """Maps associated locations to certainty of association (`dictionary`)"""
    return self._locations
var max_latitude

Maximum latitude of bounding box (float)

Expand source code
@property
def max_latitude(self):
    """Maximum latitude of bounding box (`float`)"""
    return self._max_latitude
var max_longitude

Maximum longitude of bounding box (float)

Expand source code
@property
def max_longitude(self):
    """Maximum longitude of bounding box (`float`)"""
    return self._max_longitude
var min_latitude

Minimum latitude of bounding box (float)

Expand source code
@property
def min_latitude(self):
    """Minimum latitude of bounding box (`float`)"""
    return self._min_latitude
var min_longitude

Minimum longitude of bounding box (float)

Expand source code
@property
def min_longitude(self):
    """Minimum longitude of bounding box (`float`)"""
    return self._min_longitude
var names

Maps associated names to certainty of association ('dictionary')

Expand source code
@property
def names(self):
    """Maps associated names to certainty of association ('dictionary')"""
    return self._names
var place_types

Place types associated with a place (list)

Expand source code
@property
def place_types(self):
    """Place types associated with a place (`list`)"""
    return self._place_types
var provenance

Provenance of information about this place (string)

Expand source code
@property
def provenance(self):
    """Provenance of information about this place (`string`)"""
    return self._provenance
var representative_point

Representative point of latitude and longitude (list)

Expand source code
@property
def representative_point(self):
    """Representative point of latitude and longitude (`list`)"""
    return self._representative_point
var subjects

List of subjects relevant to this place (list)

Expand source code
@property
def subjects(self):
    """List of subjects relevant to this place (`list`)"""
    return self._subjects
var title

Title included in a place's metadata in Pleiades (string)

Expand source code
@property
def title(self):
    """Title included in a place's metadata in Pleiades (`string`)"""
    return self._title
var type

Deprecated place type variable (string)

Expand source code
@property
def type(self):
    """Deprecated place type variable (`string`)"""
    return self._type
var uri

Stable Pleiades uri for a place (string)

Expand source code
@property
def uri(self):
    """Stable Pleiades uri for a place (`string`)"""
    return self._uri

Methods

def earliest_date(self)

Return earliest known date of any associated location

Returns

int
Earliest known date of any associated location
Expand source code
def earliest_date(self):
    """Return earliest known date of any associated location

    Returns
    -------
    int
        Earliest known date of any associated location
    """
    earliest = 3000
    for location in self.locations.keys():
        if location.start_date < earliest:
            earliest = location.start_date
    return earliest
def get_bbox(self)

Access bounding box of geographic coordinates

Returns

list
bounding box of geographic coordinates
Expand source code
def get_bbox(self):
    """Access bounding box of geographic coordinates

    Returns
    -------
    list
        bounding box of geographic coordinates
    """
    return [self.min_latitude, self.min_longitude, self.max_latitude, self.max_longitude]
def get_list_of_locations(self)

Return list of titles of associated locations

Returns

list
titles of associated locations
Expand source code
def get_list_of_locations(self):
    """
    Return list of titles of associated locations

    Returns
    -------
    list
        titles of associated locations
    """
    locations = []
    for location in self.locations.keys():
        locations.append(location.title)
    return locations
def get_list_of_names(self)

Return list of names associated with a place

Returns

list
names associated with a place
Expand source code
def get_list_of_names(self):
    """
    Return list of names associated with a place

    Returns
    -------
    list
        names associated with a place
    """
    names_list = []
    for name in self.names.keys():
        names_list.append(name.romanized_name)
    return names_list
def get_location_ids(self)

Return list of ids of associated locations

Returns

list
ids of associated locations
Expand source code
def get_location_ids(self):
    """
    Return list of ids of associated locations

    Returns
    -------
    list
        ids of associated locations
    """
    location_ids = []
    for location in self.locations.keys():
        location_ids.append(location.location_id)
    return location_ids
def get_name_ids(self)

Return list of ids of associated names

Returns

list
ids of associated names
Expand source code
def get_name_ids(self):
    """
    Return list of ids of associated names

    Returns
    -------
    list
        ids of associated names
    """
    name_ids = []
    for name in self.names.keys():
        name_ids.append(name.name_id)
    return name_ids
def latest_date(self)

Return latest known date of any associated location

Returns

int
latest known date of any associated location
Expand source code
def latest_date(self):
    """Return latest known date of any associated location

    Returns
    -------
    int
        latest known date of any associated location
    """
    latest = -10000
    for location in self.locations.keys():
        if location.end_date > latest:
            latest = location.end_date
    return latest
def place_type_info(self)
Expand source code
def place_type_info(self):
    print(self.place_types)
    print("https://pleiades.stoa.org/vocabularies/place-types")
def print_association_certainty_info(self)

Print explanations for association certainties

Expand source code
def print_association_certainty_info(self):
    """Print explanations for association certainties"""
    print("Explanation of association certainties relevant to " + self.title + ":")
    for certainty_type in self.association_certainty_info.keys():
        print("--- " + str(certainty_type) + " ---")
        print(self.association_certainty_info[certainty_type])
def print_connections(self)

Print list of connections and relevant information

Expand source code
def print_connections(self):
    """Print list of connections and relevant information"""
    print("Connections relevant to " + self.title + ":")
    for connection in self.connections.keys():
        c_type = self.connections[connection][0]
        c_title = self.connections[connection][1]
        c_start = self.connections[connection][2]
        c_end = self.connections[connection][3]
        print(c_title + " (id: " + str(connection) + "): ")
        print("     connection type: " + str(c_type))
        print("     date range: " + str(c_start) + ", " + str(c_end))
def print_coordinate_info(self)

Print information about geographic coordinates associated with a place

Expand source code
def print_coordinate_info(self):
    """Print information about geographic coordinates associated with a place"""
    print("Representative point: " + str(self.representative_point))
    print("Minimum latitude: " + str(self.min_latitude))
    print("Minimum longitude: " + str(self.min_longitude))
    print("Maximum latitude: " + str(self.max_latitude))
    print("Maximum longitude: " + str(self.max_longitude))
def print_location_association_certainties(self)

Print summary of locations and association certainties

Expand source code
def print_location_association_certainties(self):
    """Print summary of locations and association certainties"""
    print("Locations and association certainties relevant to " + self.title + ":")
    for location in self.locations.keys():
        print("     " + location.title + ", " + str(self.locations[location]))
def print_location_types_info(self)

Print explanations for location types.

Expand source code
def print_location_types_info(self):
    """Print explanations for location types."""
    print("Location types relevant to " + self.title + ":")
    for location_type in self.location_types_info.keys():
        print("--- " + str(location_type) + " ---")
        print(self.location_types_info[location_type])
def print_locations(self)

Print summary of titles of locations associated with a place

Expand source code
def print_locations(self):
    """Print summary of titles of locations associated with a place"""
    print("Locations relevant to " + self.title + ":")
    for location in self.locations.keys():
        print("     " + str(location.title) + " (" + str(location.start_date) + ", " + str(location.end_date) + ")")
def print_subjects(self)

Print list of relevant subjects

Expand source code
def print_subjects(self):
    """Print list of relevant subjects"""
    pr = "Subjects relevant to : " + self.title + ": "
    for subject in self.subjects:
        pr = pr + subject + ", "
    print(pr[:-2])
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("Description : " + str(self.description))
    print("Representative point : " + str(self.representative_point))
    print("ID : " + self.id)
    print("uri : " + str(self.uri))
    print("Place types: ")
    for item in self.place_types:
        print(" - " + str(item))
    if detail == 'long':
        print("Provenance : " + str(self.provenance))
        print("Details : " + str(self.details))
        print("Type : " + str(self.type))
        print("Minimum longitude : " + str(self.min_longitude))
        print("Minimum latitude : " + str(self.min_latitude))
        print("Maximum longitude : " + str(self.max_longitude))
        print("Maximum latitude : " + str(self.max_latitude))
        print("Subjects: ")
        for item in self.subjects:
            print(" - " + str(item))
    print("Locations: ")
    for location in self.locations.keys():
        print(" - " + str(location.title) + ", " + str(location.start_date) + "-" + str(location.end_date) + ", " + str(self.locations[location]))
    print("Connections: ")
    for item in self.connections.keys():
        print(" - " + item + ": " + str(self.connections[item]))
    print("Names: ")
    for item in self.names:
        print(" - " + str(item))