CConstaterende datAmsterdam
Koppel je AI →
Document · PDF

B2. Fietsdiefstal en -tracking volledige versie (AMS, nov 2022).pdf

Raadscommissie Mobiliteit, Openbare ruimte en Water 23 maart 2023, gemeente AmsterdamBij agendapunt: Kennisnemen van de resultaten van het onderzoek naar het fietsdiefstalcircuit (VN2023-007013)20.639 woorden

Open het PDF bij de gemeente ↗Naar de vergadering →

Tekst van het document

Uit het bestand gehaald, zonder opmaak, tabellen en afbeeldingen · deel 3 van 3

Naast de gegevens over de routes bieden de resultaten over de meest voorkomende tijdstippen van diefstal, locaties en fietsenstallingen meer inzicht in hoe Amsterdam zijn infrastructuur en controlepraktijken kan verbeteren om zijn burgers te beschermen. Dit onderzoek had tot doel fietsendiefstal in Amsterdam vanuit verschillende invalshoeken te onderzoeken. Ten eerste biedt het een onderzoek naar de relatie tussen de bebouwde omgeving, de beschikbaarheid van doelen en fietsendiefstal. Dit onderzoek toont de significante invloed van specifieke voorzieningen en gestalde fietsen op het voorkomen van fietsendiefstal, wat een leidraad kan zijn voor waar interventies het meest effectief zouden zijn. Ten tweede demonstreert het de toepasbaarheid van nieuwe sensormogelijkheden op het gebied van stedelijke criminologie. Deze demonstratie heeft waardevolle gegevens opgeleverd over waar gestolen fietsen naartoe gaan.

6.2 Aanbevelingen Dit onderzoek heeft verschillende beperkingen die in toekomstig onderzoek kunnen worden aangepakt. Ten eerste zou het bepalen van het werkelijke aantal fietsendiefstallen per buurt meer prioriteit moeten krijgen. Met onnauwkeurige of onvolledige gegevens zullen de conclusies ook onvolledig zijn. Ten tweede kan de analyse van het straatbeeld om de COT te onderzoeken worden uitgebreid met aanpassingen voor het tijdstip van de dag, de weersomstandigheden en de datum waarop het beeld van de straat is genomen. Ten derde moeten specifieke modellen worden ontwikkeld die rekening houden met ruimtelijke en temporele patronen van de gestolen fietsroutes om een beter inzicht te krijgen in de routes die de gestolen fietsen nemen. Deze modellen zouden samen met deskundigen en politiediensten kunnen worden ontwikkeld, aangezien zij verschillende inzichten kunnen hebben op basis van de plaatselijke situatie op het gebied van fietsendiefstal. Op basis van de resultaten en de besproken beperkingen moet de gemeente Amsterdam beleid ontwikkelen dat gericht is op de lokale markt voor gestolen fietsen.

56

Er is voldoende bewijs om de argumenten te weerleggen dat lokaal beleid niet effectief zal zijn omdat gestolen fietsen naar andere steden of landen worden vervoerd. Dit lokale beleid zou kunnen bestaan uit campagnes om het risico van het kopen van een gestolen fiets aan te tonen, of dat je door het kopen van een gestolen fiets eigenlijk van een andere Amsterdammer steelt. Een andere campagne die bewezen effectief is, is het ophangen van borden met “Fietsendieven, we houden jullie in de gaten” op hotspots van fietsendiefstallen in de stad (Nettle et al., 2012). Verder kunnen verbeteringen in de fietsparkeerinfrastructuur of cameratoezicht helpen bij het terugdringen van fietsendiefstal. Zoals eerder gezegd, moeten deze verbeteringen op basis van dit onderzoek gericht zijn op gebieden met bepaalde voorzieningen en plaatsen waar veel fietsen geparkeerd staan.

57

Bronvermelding Albers, W. (2019). De predispositie van de verdachte bij het stelen van een lokfiets: creëert de gelegenheid de dief?. Bijzonder Strafrecht & Handhaving - Boom Juridisch. Retrieved 18 August 2021, from https://dspace.library.uu.nl/bitstream/handle/1874/ 382892/De_predispositie_van_de_verdachte_bij_he t_stelen_van_een_lokfiets_cre_ert_de_gelegenheid _de_dief.pdf?sequence=1. Anderez, D. O., Kanjo, E., Amnwar, A., Johnson, S., & Lucy, D. (2021). The Rise of Technology in Crime Prevention: Opportunities, Challenges and Practitioners Perspectives. arXiv preprint arXiv:2102.04204. Brantingham, P., & Brantingham, P. (2013). Crime pattern theory. In Environmental criminology and crime analysis (pp. 100-116). Willan. Cantalupo, R. O., Crowe, I. J., & Kent, S. J. (2013). Free Wheels: An Assessment of Bicycle Theft in Denmark. Unpublished Centraal Bureau voor de Statistiek. (2019). Veiligheidsmonitor. Den Haag. Retrieved from https://www.rijksoverheid.nl/documenten/rapporte n/2020/03/02/tk-bijlage-veiligheidsmonitor-2019 Centraal Bureau voor de Statistiek. (2021). Geregistreerde diefstallen; diefstallen en verdachten, regio. Den Haag: CBS. Retrieved from https://opendata.cbs.nl/statline/#/CBS/nl/dataset/8 3651NED/table?fromstatweb Chen, P., Liu, Q., & Sun, F. (2018). Bicycle parking security and built environments.

Transportation research part D: transport and environment, 62, 169178. Clarke, R. V. G., & Felson, M. (Eds.). (1993). Routine activity and rational choice (Vol. 5). Transaction publishers. Cohen, L. E., & Felson, M. (1979). Social change and crime rate trends: A routine activity approach. American sociological review, 588-608.

CONEBI. (2021). European Bicycle Industry and Market Profile 2017 with 2016 data. Brussel: CONEBI. Retrieved from https://issuu.com/conebi/docs/20170713_european _bicyle_industry_a Cook, P. J. (1986). The demand and supply of criminal opportunities. Crime and justice, 7, 1-27. de la Bruheze, A. A. (2000, June). Bicycle use in twentieth century Western Europe: the comparison of nine cities. In Proceedings of the Velo Mondial 2000 World Cycling Conference. de Ridder, J., Kok, A., van Zon, C., & Heldring, T. (2020). Fietsdiefstal bestrijding - Bestuurlijk rapport. Publicaties.rekenkamer.amsterdam.nl. Retrieved 10 August 2021, from https://publicaties.rekenkamer.amsterdam.nl/fietsd iefstalbestrijdingbestuurlijk-rapport/. Felson, M. (2017). Routine activity and rational choice: Advances in criminological theory. Gemeente Amsterdam (2021). Panoramic Images. Retrieved 18 August 2021, from https://api.data.amsterdam.nl/panorama. Gemeente Amsterdam. (2021a). Fietsdepot in Amsterdam | Data overheid. Data.overheid.nl. Retrieved 19 August 2021, from https://data.overheid.nl/en/dataset/1n_fty_cgrooq. Geofabrik Download Server. Download.geofabrik.de. (2021). Retrieved 18 August 2021, from https://download.geofabrik.de/europe/netherlands /noord-holland.html. Harcourt, B. E. (1998).

Reflecting on the subject: A critique of the social influence conception of deterrence, the broken windows theory, and ordermaintenance policing New York style. Mich. L. Rev., 97, 291.

58

Harms, K. (2017). Positieve uitlokking van ethisch hacken. Netherlands Journal Of Legal Philosophy, 46(2), 196-207. https://doi.org/10.5553/njlp/22130713201704600200 6 Johnson, S. D., Sidebottom, A., & Thorpe, A. (2008). Bicycle theft. Washington, DC: US Department of Justice, Office of Community Oriented Policing Services. Kirillov, A., Girshick, R., He, K., & Dollár, P. (2019). Panoptic feature pyramid networks. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 6399-6408). Kuppens, J., Wolsink, J., Van Esseveldt, J., & Ferwerda, H. (2020). Fietsdiefstal in Nederland. Levy, J. M., Irvin-Erickson, Y., & La Vigne, N. (2018). A case study of bicycle theft on the Washington DC Metrorail system using a Routine Activities and Crime Pattern theory framework. Security Journal, 31(1), 226-246. Li, X., Zhang, C., Li, W., Ricard, R., Meng, Q., & Zhang, W. (2015). Assessing street-level urban greenery using Google Street View and a modified green view index. Urban Forestry & Urban Greening, 14(3), 675685. Lin, T. Y., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., ... & Zitnick, C. L. (2014, September). Microsoft coco: Common objects in context. In European conference on computer vision (pp. 740755). Springer, Cham. Lu, Y. (2003). Getting away with the stolen vehicle: An investigation of journey-after-crime.

The Professional Geographer, 55(4), 422-433. Mburu, L. W., & Helbich, M. (2016). Environmental risk factors influencing bicycle theft: A spatial analysis in London, UK. PLoS one, 11(9), e0163354. Miranda, A. S., Fan, Z., Duarte, F., & Ratti, C. (2021). Desirable streets: Using deviations in pedestrian trajectories to measure the value of the built environment. Computers, Environment and Urban Systems, 86, 101563.

Miró, F. (2014). Routine activity theory. The encyclopedia of theoretical criminology, 1-7. Nello-Deakin, S., & Nikolaeva, A. (2021). The human infrastructure of a cycling city: Amsterdam through the eyes of international newcomers. Urban Geography, 42(3), 289-311. Nettle, D., Nott, K., & Bateson, M. (2012). ‘Cycle thieves, we are watching you’: Impact of a simple signage intervention against bicycle theft. PloS one, 7(12), e51738. O’Flaherty, B., & Sethi, R. (2015). Urban crime. In Handbook of regional and urban economics (Vol. 5, pp. 1519-1621). Elsevier. Politie Nederland. (2021). Geregistreerde misdrijven; soort misdrijf, wijk, buurt, maandcijfers. Data Politie. Retrieved 18 August 2021, from https://data.politie.nl/#/Politie/nl/dataset/47022NE D/table?ts=1629280548349. Sidebottom, A., Thorpe, A., & Johnson, S. D. (2009). Using targeted publicity to reduce opportunities for bicycle theft: A demonstration and replication. European Journal of Criminology, 6(3), 267-286. Sutton, M. (1995). Supply by Theft-Does the Market for Second-Hand Goods Play a Role in Keeping Crime Figures High. Brit. J. Criminology, 35, 400. van Limpt, C. (2011). DPG Media Privacy Gate. Trouw.nl. Retrieved 18 August 2021, from https://www.trouw.nl/nieuws/schonegrachten~bcdd561c/. Veiligheidsmonitor. (2020). e Regionale Veiligheidsrapportage Amsterdam-Amstelland. Amsterdam-Amstelland: CBS.

Retrieved from https://assets.amsterdam.nl/publish/pages/895401/ rvr_2019.pdf Wu, Y., Kirillov, A., Massa, F., Lo, W.Y. & Girshick, R. (2019). Detectron2. Github.com/facebookresearch/detectron2.

Younger, M., Morrow-Almeida, H. R., Vindigni, S. M., & Dannenberg, A. L. (2008). The built environment, climate change, and health: opportunities for cobenefits. American journal of preventive medicine, 35(5), 517-526. Zhang, L., Messner, S. F., & Liu, J. (2007). Bicycletheft victimization in contemporary urban China: A multilevel assessment of risk and protective factors. Journal of Research in Crime and Delinquency, 44(4), 406-426. Zhao, X., & Tang, J. (2018). Crime in urban areas: A data mining perspective. ACM SIGKDD Explorations Newsletter, 20(1), 1-12. Plyska D./Плиска, Д. (2018). COMBATE BIKES’THEFTS IN SWEDEN.

Bijlage Bijlage 1 - Panoptische segmentatiecode # import some common detectron2 utilities from detectron2.engine import DefaultPredictor from detectron2.config import get_cfg from datetime import datetime import numpy as np import cv2 import os import csv # import json from detectron2.data import MetadataCatalog from detectron2.utils.visualizer import Visualizer

# Create config cfg = get_cfg() cfg.merge_from_file("C:/Users/titus/Downloads/detectron2-master/detectron2-master/configs/COCOPanopticSegmentation/panoptic_fpn_R_101_3x.yaml") cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set threshold for this model cfg.MODEL.WEIGHTS = "detectron2://COCOPanopticSegmentation/panoptic_fpn_R_101_3x/139514519/model_final_cafdb1.pkl" predictor = DefaultPredictor(cfg) #init variables, use this one or the one below entries = ['61568.jpg', '61569.jpg', '61570.jpg', '61571.jpg', '61572.jpg', '61573.jpg', '61574.jpg', '61575.jpg', '61576.jpg','61577.jpg','61578.jpg','61579.jpg', '61580.jpg', '61581.jpg', '61582.jpg'] #get names of all images in the folder (order defined by your OS settings, might be confusing) entries = os.listdir('C:/Users/titus/Downloads/vid/') print(entries) # make a file to save all the data (only run once as this overides the file, and deletes the data, this is really just for the first time) # with open('C:/Users/titus/Documents/Livinglab/gsvtry8.csv', mode='w', newline='') as datagsv: # datawriter = csv.writer(datagsv, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) # datawriter.writerow(['point_id', 'type', 'percentage']) #Iterate through the entries (so each image, based on the image name gained earlier) def get_image(entries): #48389, 4839 x = 0##this defines where to start in case of unexpected errors while x <

len(entries):#I would implememt a check whether image size is decent otherwise skip (maybe 5 errors in 80.000 images but still annoying) im1 = cv2.imread(f"E:/amsterdamimages/{entries[x]}") #pass this image to the panoptic segmentation algorithm start = datetime.now() panopticseg(im1, entries[x], start) x+=1 61

def panopticseg(im, entries, start): #predict the segments and the corresponding pixels (instances, area etc) panoptic_seg, segments_info = predictor(im)["panoptic_seg"] g=0 #uncomment this to visualize the results (make sure to uncomment the import visualizer statments at the top as well) Close image to continue v = Visualizer(im, MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1) out = v.draw_panoptic_seg_predictions(panoptic_seg.to("cpu"), segments_info, area_threshold=None, alpha=0.5) #cv2.imshow('', out.get_image()) cv2.imwrite(os.path.join(f"C:/Users/titus/Documents/applications/", f'{entries}'), out.get_image()) #cv2.waitKey(0) #printing progress message (just the name of the im) print(entries, datetime.now() - start) #init some variables bike_count = 0 car_count = 0 person_count = 0 type = [] percentage = [] #all defines the total number of pixels in the image (len(im) provides 600.000 as it is 3D (RGB, or other format)) all = 2000000 #iterate over segments_info, which stores the instance information, be careful it is json which is not compatible with True statements while g < len(segments_info): ##Adjusted as g <len already takes care of it dicts = segments_info[g] #if key 'area' is present the instance belongs to the 'stuff' category meaning n pixels is directly available if 'area' in dicts: if segments_info[g]["category_id"] == 50: #building

type.append('building') percentage.append(segments_info[g]["area"]/all*100) g+=1 elif segments_info[g]["category_id"] == 44: #pavement type.append('pavement') percentage.append(segments_info[g]["area"]/all*100) g+=1 elif segments_info[g]["category_id"] == 40: #sky type.append('sky') percentage.append(segments_info[g]["area"]/all*100) g+=1 elif segments_info[g]["category_id"] == 37: #tree type.append('tree') percentage.append(segments_info[g]["area"]/all*100) g+=1 elif segments_info[g]["category_id"] == 34: #water type.append('water') percentage.append(segments_info[g]["area"]/all*100) g+=1 61

elif segments_info[g]["category_id"] == 21: #road type.append('road') percentage.append(segments_info[g]["area"]/all*100) g+=1 elif segments_info[g]["category_id"] == 20: #river type.append('river') percentage.append(segments_info[g]["area"]/all*100) g+=1 else: g+=1 #if the area is not present, it belongs to the 'things' cat, meaning counting is more efficient else: if segments_info[g]['category_id'] == 0: person_count += 1 g+=1 elif segments_info[g]['category_id'] == 1: bike_count += 1 g += 1 elif segments_info[g]['category_id'] == 2: car_count += 1 g += 1 else: g+=1 #Write the data stored in type, percentage, counts to initiated file # with open('C:/Users/titus/Documents/Livinglab/gsvtry6.csv', mode='a', newline='') as datagsv: # datawriter = csv.writer(datagsv, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) # p=0 # while p < len(type): ##Adjusted as p <len already takes care of it # datawriter.writerow([f'{entries}', f'{type[p]}', f'{percentage[p]}']) # p+=1 # datawriter.writerow([f'{entries}', 'people', f'{person_count}']) # datawriter.writerow([f'{entries}', 'bike', f'{bike_count}']) # datawriter.writerow([f'{entries}', 'car', f'{car_count}']) #this exists this function and goes back to the get_image function to iterate to the next one (also cleans the variables) get_image(entries) #prints total running time for your image analysis (nice for statistics)

62

Bijlage 2 - Code om afbeeldingen uit de API te halen

import requests import pandas as pd #Load point data (needs to be in csv format) with id per point and lat, lon in right projection df = pd.read_csv (r'path to/amsterdampointsid.csv') df = pd.DataFrame(df) #Inititate variables to be used lon = [] lat = [] id = [] x=0 #Set z value to last dowloaded point id in case of unexpected error message z=0 y = len(df) ##read the point data and store in list (note the second argument in the [] defines the column in which the location data is found, this differs) while x <= (y-1): lat.append(df.iloc[x, 0]) lon.append(df.iloc[x, 1]) id.append(df.iloc[x, 72]) x+=1 d = (len(id)) #Iterate over number of entries in id (variable d) while z <= (d-1): #For every entry in lon, lat, id extract corresponding data lons = str(lon[z]) lats = str(lat[z]) ids = str(id[z]) #init parameters (the fov is redundant in this case but it runs anyway) params = { 'scrid' : '4326', 'near': f'{lats},{lons}', 'radius' : '40', 'fov' : '120' } #parse the params to api response = requests.get("http://api.data.amsterdam.nl/panorama/panoramas/", params, allow_redirects=True) #get the json the API returns re = response.json() #make sure there is a panorama at lat, lon, if not skip if re['count'] > 0: #get the right api href link res = re['_embedded']['panoramas'][0]

63

imagereq = res['_links']['equirectangular_small']['href'] #get the content (encoded picture data) from the imagereq image = requests.get(imagereq).content #print for progress measurement in case of many images (which is the case ~ 84.600) print(ids) #write the image to disk, specify local path with open(f'path to/amsterdamimages/{ids}.jpg', 'wb') as handler: handler.write(image) z += 1

64

De tekst is automatisch uit het bestand gehaald en kan afwijken van het origineel (kolommen, tabellen en koppen lopen door elkaar). Het officiële stuk bij de gemeente is leidend. Bron: https://api.notubiz.nl/document/12494480/1