Skip to content

Instantly share code, notes, and snippets.

View aaronfraint's full-sized avatar

Aaron Fraint aaronfraint

View GitHub Profile
@aaronfraint
aaronfraint / felt_fastapi_app.py
Last active May 8, 2025 13:24
Backend application that uses felt-python and FastAPI
import os
from dotenv import load_dotenv
from fastapi import FastAPI, Request
import felt_python as felt
import geopandas as gpd
from sqlalchemy import create_engine
import datetime
from slack import post_to_slack_channel
const tractID = "AZPJ0mMeRQS1TGTFnR22dA";
const countyID = "ti28k4ucQ9AWZgdmLV4ZuWB";
felt.onLayerFiltersChange({
options: { layerId: tractID },
handler: async ({combined, ephemeral, style, components}) => {
const data = await felt.getCategoryData({
layerId: tractID,
@aaronfraint
aaronfraint / make-pmtiles.sh
Created March 20, 2025 19:49
Create PM Tiles with tippecanoe
tippecanoe -zg -f -o output_filename.pmtiles input_file.geojson
@aaronfraint
aaronfraint / load_tile_url_to_felt.py
Created March 20, 2025 19:32
Load PMTiles to Felt
from felt_python import upload_url
tile_url = "https://felt-user-data-assets.s3.us-west-1.amazonaws.com/enf/boston.pmtiles"
upload_url(
map_id="YOUR_MAP_ID_HERE",
layer_url=tile_url,
layer_name="Tiles loaded via python",
api_token="YOUR_API_TOKEN_HERE"
)
# Imports for Felt-specific functionality
import os
from dotenv import load_dotenv
from felt_python import upload_file
load_dotenv()
os.environ["FELT_API_TOKEN"] = os.getenv("FELT_API_TOKEN")
<!doctype html>
<html lang="en">
<head>
<title>Felt JS SDK</title>
</head>
<body>
<div class="container">
<div id="mapContainer"></div>
<div id="sidebar">
<h3>Selected Polygons</h3>
import os
import geopandas as gpd
from dotenv import load_dotenv
from sqlalchemy import create_engine
from felt_python import upload_file
# In the same folder as this file, create a text file named '.env'
# with a line that looks like: 'FELT_API_TOKEN=value-from-the-felt-ui'
load_dotenv()
name: felt-pilot
channels:
- conda-forge
dependencies:
- python=3.12
- pandas<2.2
- geopandas
- sqlalchemy
-----------------------------------
-- Convert crime lat/lons to points
-----------------------------------
SELECT
date,
description,
location_description,
ST_GEOGPOINT(longitude, latitude) AS geom
FROM
`cartobq.docs.sdsb_chicago_burglary_crime_sample`
-- SECTION 1
SELECT * FROM `cartobq.docs.sds_bootcamp_nyc_starting_point`
SELECT * FROM `cartobq.docs.sds_bootcamp_nyc_starting_point_buffer`
SELECT * FROM `cartobq.docs.sds_bootcamp_nyc_census_block_groups`
SELECT * FROM `cartobq.docs.sds_bootcamp_nyc_census_block_groups_with_poi_data`