File:Rossmo diagram of Kyllikki Saari murder site 1 v 1.png
![File:Rossmo diagram of Kyllikki Saari murder site 1 v 1.png](https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Rossmo_diagram_of_Kyllikki_Saari_murder_site_1_v_1.png/559px-Rossmo_diagram_of_Kyllikki_Saari_murder_site_1_v_1.png?20230823121141)
Original file (698 × 748 pixels, file size: 105 KB, MIME type: image/png)
Captions
Captions
Summary
[edit]DescriptionRossmo diagram of Kyllikki Saari murder site 1 v 1.png |
English: Attempt to make Rossmo's diagram of Kyllikki Saari murder site.
Basic data for estimation: grave, site where Kyllikki was last seen and cache site of Bike, Kellunlaakso swamp. Radius of maximup propability is here estimeted quite arbitrary. |
Date | |
Source | Own work |
Author | Merikanto |
Camera location | 62° 08′ 41.99″ N, 21° 57′ 06.02″ E ![]() ![]() | View this and other nearby images on: OpenStreetMap | ![]() |
---|
Python 3 code to produce image.
This map is based on Folium OpenStreetMap.
https://www.openstreetmap.org/copyright
Data for locations comes from Finnish Wikipedia.
Locations: grave of Kyllikki Saari, bike was cached to Lellunlaakso.
Python3 code
-
- rossmo formula with folium
-
- test program only, maybe buggy
- here murder on Kyllikki Saari, Isojoki, Finland
- python 3 script
-
- 23.8.2023 v. 0000.0000.0004
import os
import time
import math
from math import pow
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import folium
from folium import plugins
from selenium import webdriver
dimx=512
dimy=512
kenterlon1=21.951671
kenterlat1=62.144996
olon1=21.92
olat1=62.125
olon2=21.98
olat2=62.155
sw1=[ olat1, olon1]
ne1=[ olat2, olon2]
rosmo1=np.zeros((dimy, dimx))
rosmo1=rosmo1*1
data =[[ 62.144996, 21.951671, 1. ],
[ 62.133412, 21.956548, 1. ]]
- [ 62.1406, 21.9481, 1. ]]
- minimum radius oh highest propab
- calculatend in below
- buffer_dist = 0
param_f = 1
param_g = 2
data2=np.array(data)
dimlon=olon2-olon1
dimlat=olat2-olat1
lonk=dimx/dimlon
latk=dimy/dimlat
lokx=[]
loky=[]
print(olon1, olat1, olon2, olat2)
for n in range (0, len(data2)):
lon0=data2[n,1]
lat0=data2[n,0]
print(lon0, lat0)
x=int((lon0-olon1)*lonk)
y=dimy-int((lat0-olat1)*latk)
#x=int((lon0-olon1)*lonk)
#y=int((lat0-olat1)*latk)
lokx.append(x)
loky.append(y)
print(lokx)
print(loky)
lenu=len(data2)
sites=[]
for n in range (0, lenu):
x=lokx[n]
y=loky[n]
#print(x,y)
pp=(x,y)
sites.append(pp)
print(sites)
- experimental only auto-radius ...
x00=lokx[0]
y00=loky[0]
xr=0
yr=0
for n in range (1, lenu):
x=lokx[n]-x00
y=loky[n]-y00
xr=xr+x
yr=yr+y
xr=xr/lenu
yr=yr/lenu
rr=int(math.sqrt(xr*xr+yr*yr))
print(rr)
buffer_dist =rr
- quit(-1)
p = 0
def phi( x, y, i, j ):
if abs(x-i) + abs(y-j) > buffer_dist:
return 1
else:
return 0
for x in range(dimx):
for y in range(dimy):
for site in sites:
i = site[0]
j = site[1]
characteristic = phi(x, y, i, j)
manhattan_dist = abs(x-i) + abs(y-j)
try:
p += characteristic / pow(manhattan_dist, param_f)
except ZeroDivisionError:
pass
n = (1-characteristic)*pow(buffer_dist, (param_g-param_f))
d = (2*buffer_dist)-characteristic
d = pow(d, param_g)
rosmo1[y,x]=p ## tsek it!
p = 0
#print("")
imr=np.copy(rosmo1)
imb=np.copy(rosmo1)
img=np.copy(rosmo1)
ima=np.copy(rosmo1)
imr=imr
imb=imb*0
img=img*0
ima=255-imr
ima2=ima/256
rosmo2=np.dstack((imr, img, imb, ima))
map = folium.Map(location=[kenterlat1, kenterlon1], TileProvider='OpenStreetMap', zoom_start=17, control_scale = True,)
folium.raster_layers.ImageOverlay(rosmo2,
[[ olat1, olon1],[ olat2, olon2]],
opacity=0.2,
).add_to(map)
folium.LayerControl().add_to(map)
- markers
- grave
- folium.Marker(location=[data[0][0], data[0][1]],html="Hauta",popup="Kyllikki saaren suohauta").add_to(map)
- bike
- folium.Marker(location=[data[1][0], data[1][1]],html="Pyörä", popup="Polkupyörän kätköpaikka").add_to(map)
latx1=data[0][0]
lonx1=data[0][1]
folium.Circle([latx1, lonx1], 45, fill_color="grey", opacity=0.7,color = 'grey', fill=True).add_child(folium.Popup('Hauta')).add_to(map)
folium.map.Marker(
[latx1 + 0.0001, lonx1 - 0.0001],
icon=folium.DivIcon(
icon_size=(150,36),
icon_anchor=(0,0),
html='
%s
' % "Hauta",
)
).add_to(map)
latx1=data[1][0]
lonx1=data[1][1]
folium.Circle([latx1, lonx1], 45, fill_color="blue", opacity=0.7,color = 'blue', fill=True).add_child(folium.Popup('Pyörä')).add_to(map)
folium.map.Marker(
[latx1 + 0.0001, lonx1 - 0.0001],
icon=folium.DivIcon(
icon_size=(150,36),
icon_anchor=(0,0),
html='
%s
' % "Pyörä",
)
).add_to(map)
map.fit_bounds([sw1, ne1])
- map.save("rossmotest1.html")
delay=5
- Save the map as an HTML file
fn='testmap.html'
tmpurl='file://{path}/{mapfile}'.format(path=os.getcwd(),mapfile=fn)
map.save(fn)
- Open a browser window...
browser = webdriver.Firefox()
- ..that displays the map...
browser.get(tmpurl)
- Give the map tiles some time to load
time.sleep(delay)
- Grab the screenshot
browser.save_screenshot('testmap.png')
- Close the browser
browser.quit()
Licensing
[edit]![w:en:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![attribution](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![share alike](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 12:11, 23 August 2023 | ![]() | 698 × 748 (105 KB) | Merikanto (talk | contribs) | Update |
10:15, 23 August 2023 | ![]() | 696 × 744 (102 KB) | Merikanto (talk | contribs) | Update | |
08:47, 21 August 2023 | ![]() | 697 × 746 (83 KB) | Merikanto (talk | contribs) | Uploaded own work with UploadWizard |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.