pyJedAI Spatial Component#

In this notebook we present the pyJedAI Geospatial Interlinking functionality.

!pip install pyjedai:0.1.4
^C
!python --version
Python 3.9.16

Libraries injection#

import csv
import sys
import os

from pyjedai.datamodel import SpatialData
from pyjedai.spatial.filtering import StandardSpatialFiltering
from pyjedai.spatial.initialization import StandardSpatialInitialization
from pyjedai.spatial.verification import StandardSpatialVerification

Data reading and pyJedAI-formating#

data_dir = '../data/spatial/'

maxInt = sys.maxsize
while True:
    try:
        csv.field_size_limit(maxInt)
        break
    except OverflowError:
        maxInt = int(maxInt/10)

path1 = os.path.join(data_dir,"regions_gr.csv")
path2 = os.path.join(data_dir,"wildlife_sanctuaries.csv")

delimiter1 = "\t"
delimiter2 = "\t"

# Read the CSV files
file1 = open(path1, newline='', encoding='utf-8')
file2 = open(path2, newline='', encoding='utf-8')

dataset_1 = csv.reader(file1, delimiter=delimiter1)
dataset_2 = csv.reader(file2, delimiter=delimiter1)

spatial_data = \
    SpatialData(source_reader=dataset_1,
                source_delimiter="\t",
                target_reader=dataset_2, target_delimiter="\t",
                skip_header=True)

Spatial Filtering#

SSF = StandardSpatialFiltering()
spatial_index, theta_x, theta_y = SSF.process(spatial_data)

Spatial Initialization#

SSI = StandardSpatialInitialization(budget=1000, wScheme="MBR")
priority_pairs = SSI.process(spatial_data, spatial_index, theta_x=theta_x, theta_y=theta_y)

Spatial Verification#

SSV = StandardSpatialVerification(q_pairs=100)
SSV.process(spatial_data=spatial_data, priority_pairs=priority_pairs)
SSV.evaluate()
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Performance:
	Precision:      0.72% 
	Recall:         6.48%
	F1-score:       1.29%
	Progressive Geometry Recall:      2.33%
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
{'Precision:': 0.7192008879023307,
 'Recall:': 6.48,
 'F1-score:': 1.2947052947052946,
 'Progressivr geometry recall:': 2.3338068812430635}