The Antikythera Survey Project
The datasets archived here represent the full and complete results from this survey and from the subsequent programme of artefact study. The artefact data has been subdivided into three discrete elements: 'pottery', 'lithics' and 'other', while the other spatial data section contains information about three kinds of survey: stage-one tractwalking, stage-two grid collection and separate surveys of geology, standing structures and terraces. https://archaeologydataservice.ac.uk/archives/view/antikythera_ahrc_2012/downloads.cfm?type=spatial
#Start the Geopanda.... Make sure you install it first
import geopandas as gpd
#Import the Datasets(geojson files)
tracts = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/tracts.geojson')
counts = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/counts.geojson')
lithics = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/lithics.geojson')
other = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/other.geojson')
grids = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/grids.geojson')
geology = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/geology.geojson')
pottery = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/pottery.geojson')
terraces = gpd.read_file(r'http://jwitcoski.github.io/Antikythera/data/terraces.geojson')
#Look at the data to make sure they all are gis data
lithics.plot()
tracts.plot()
counts.plot()
lithics.plot()
other.plot()
grids.plot()
geology.plot()
pottery.plot()
terraces.plot()
<AxesSubplot:>
#We can look at the atributes of each file. This is the rock file
lithics.head()
MWShapeID | UID | Type | Unit | Walker | PassGrid | Section | FragNo | Material | MatSimple | PrimBlank | SecBlank | Length | Thickness | Width | ToolType | SubType | BifaceComp | ProjNotes | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0075-7105-S-L2225 | grid | 0075-7105 | 57 | 37 | S | 2225 | o | o | shatter | shatter | 13.4 | 5.2 | 7.4 | n | None | None | None | POINT (23.32556 35.82562) |
1 | 1 | 0075-7105-S-L2226 | grid | 0075-7105 | 57 | 37 | S | 2226 | o | o | flake | flake fragment | 9.7 | 2.3 | 5.3 | n | None | None | None | POINT (23.32555 35.82567) |
2 | 2 | 0075-7115-S-L2229 | grid | 0075-7115 | 29 | 37 | S | 2229 | o | o | indeterminate | pe | 18.4 | 6.9 | 17.1 | pe | pe | None | None | POINT (23.32558 35.82569) |
3 | 3 | 0075-7115-S-L2230 | grid | 0075-7115 | 29 | 37 | S | 2230 | o | o | flake | flake fragment | 16.7 | 9.1 | 22 | other retouched tools | tang | None | None | POINT (23.32558 35.82568) |
4 | 4 | 0075-7125-S-L2260 | grid | 0075-7125 | 28 | 37 | S | 2260 | o | o | flake | flake fragment | 8.6 | 3.1 | 9.8 | n | None | None | None | POINT (23.32552 35.82580) |
#We can change the attributes of each map
#figsize=(10,10) will make the map 10 x 10
# end_kwds={"label":"Happiness by Country"})
lithics.plot(figsize=(10,10), legend=True, color="white", edgecolor="grey")
<AxesSubplot:>
#now lets make a heat map
#import a few more libraries
%matplotlib inline
import numpy as np
from scipy import ndimage
import matplotlib.pylab as pylab
import matplotlib.pyplot as plt
pylab.rcParams['figure.figsize'] = 8, 6
#Here is the code to make a simple heat map
pts = lithics
def heatmap(d, bins=(100,100), smoothing=1.3, cmap='jet'):
def getx(pt):
return pt.coords[0][0]
def gety(pt):
return pt.coords[0][1]
x = list(d.geometry.apply(getx))
y = list(d.geometry.apply(gety))
heatmap, xedges, yedges = np.histogram2d(y, x, bins=bins)
extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]
logheatmap = np.log(heatmap)
logheatmap[np.isneginf(logheatmap)] = 0
logheatmap = ndimage.filters.gaussian_filter(logheatmap, smoothing, mode='nearest')
plt.imshow(logheatmap, cmap=cmap, extent=extent)
plt.colorbar()
plt.gca().invert_yaxis()
plt.show()
#Let us run the heatmap on the lithics aka rocks
heatmap(pts, bins=50, smoothing=1.5)
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:14: RuntimeWarning: divide by zero encountered in log
Now we can make a basemap
#We can Add two layers together and a title
base = tracts.plot(color='white', edgecolor='black')
lithics.plot(ax=base, marker='o', color='red', markersize=5).set(title='Antikythera Lithics Found');
Let us add some more layers
base = tracts.plot(figsize=(20,20),color='white', edgecolor='black', zorder=1)
first = lithics.plot(figsize=(20,20), ax=base, marker='o', color='red', markersize=2, zorder=4)
second = pottery.plot(figsize=(20,20), ax=first, marker='x', color='purple', markersize=2, zorder=3)
other.plot(figsize=(20,20), legend=True, ax=second, marker='x', color='green', markersize=5, zorder=2).set(title='Antikythera Finds')
[Text(0.5, 1.0, 'Antikythera Finds')]