Skip to content

Instantly share code, notes, and snippets.

@ttomasz
ttomasz / convert2pdf.sh
Created December 31, 2023 01:56
Formaty danych "cloud native" dla danych przestrzennych
# download pandoc deb and install
# sudo apt install texlive texlive-xetex
pandoc --from gfm --to pdf --pdf-engine=xelatex --output output.pdf opis.md
@ttomasz
ttomasz / read_notes.py
Created November 2, 2023 16:54
OpenStreetMap Notes dump parser
import bz2
import xml
import xml.dom.pulldom
from dataclasses import dataclass
from datetime import datetime
from typing import Generator, Optional, List
from xml.dom.minidom import Element
import sys
@ttomasz
ttomasz / google_sheets_example.py
Created May 24, 2023 19:16
Query Google Spreadsheet directly using Duckdb and Fabduckdb extension
import duckdb
import fabduckdb
import gspread
import pandas as pd
def read_gsheet(service_account_json_path: str, gsheets_url: str, worksheet_name: str) -> pd.DataFrame:
gc = gspread.service_account(filename=service_account_json_path, scopes=gspread.auth.READONLY_SCOPES)
gsheet = gc.open_by_url(gsheets_url)
data = gsheet.worksheet(worksheet_name).get_all_records()
@ttomasz
ttomasz / convert.py
Last active March 20, 2023 17:26
Convert multiline (regular) GeoJSON to line-delimited
import sys
import datetime
import time
from pathlib import Path
try:
import ijson
except ModuleNotFoundError:
print("Module isjon not found. Run: `pip install ijson`")
raise
@ttomasz
ttomasz / Main.scala
Created November 2, 2022 22:33
Scala2 implicit conversion to achieve fluent interface on spark dataframes
import org.apache.spark.sql.functions.{col, lower}
import org.apache.spark.sql.{DataFrame, SparkSession}
object Main {
def main(args: Array[String]): Unit = {
// initialize
val spark = SparkSession.builder.master("local[1]").appName("Simple Application").getOrCreate()
@ttomasz
ttomasz / taginfo.py
Created October 29, 2022 20:50
OSM PBF count statistics about tag usage
from collections import Counter
from datetime import timedelta
from itertools import combinations
from sys import argv
from time import perf_counter
import osmium
from osmium.osm import Node, Way, Relation
@ttomasz
ttomasz / map_style.json
Last active May 29, 2022 00:35
Basic map style with OSM Carto tiles
{
"version": 8,
"name": "Map style",
"metadata": {"maputnik:renderer": "mbgljs"},
"sources": {
"osm": {
"type": "raster",
"tiles": [
"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png",
"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png",
@ttomasz
ttomasz / komendy.txt
Created June 15, 2021 22:15
Przykładowe komendy do zaimportowania danych OpenStreetMap do PostGIS z użyciem narzędzia Imposm3 (WSL2+Docker)
# import danych OpenStreetMap z pliku PBF do bazy PostgreSQL + PostGIS z użyciem Imposm3
mkdir imposm-test
cd imposm-test
wget https://github.com/omniscale/imposm3/releases/download/v0.11.1/imposm-0.11.1-linux-x86-64.tar.gz
tar -xvf imposm-0.11.1-linux-x86-64.tar.gz
@ttomasz
ttomasz / przykłady_tematów_gis.md
Last active March 19, 2024 13:27
Tematy GISowe

Plan tematów do omówienia dla przedmiotu Systemy Informacji Przestrzennej

Przykładowy plan stworzony dla studentów na kierunku: Inżynieria Bezpieczeństwa

Wykłady

  1. Charakterystyka danych przestrzennych
    • co to ta długość i szerokość geograficzna
    • wektor vs raster
  • podstawowe operacje na danych przestrzennych:
@ttomasz
ttomasz / create_playlist.py
Last active May 18, 2024 20:45
Read text file with song names and create a Spotify playlist out of them
import time
import spotipy
from spotipy.oauth2 import SpotifyOAuth
from tqdm import tqdm
import secrets
#
# pip install spotipy tqdm