Jump to content

Bridge Street Neighborhood map

From NYC Resistor Wiki

When last we left our heros

[edit | edit source]

This project was started pre-pandemic. The working files long lost, an svg was found in an old email account in 2025 and successfully cut on some cardboard. A test mount was done on 8.5 x 11 paper (damn Inkscape and its lack of posterizing print tools). Feedback on the test was in retrospect obvious: what's a map without street names. So time to recreate the project from the start - since that seems likely to be faster than hand adding every street name. Damn. If only time and space didn't degrade anything not archived.

Source Data

[edit | edit source]

Attempts:

(1) OpenStreetMap - export https://www.openstreetmap.org/#map=15/40.69583/-73.98953 as an SVG. This successfully loads up in Inkscape (after causing Inkscape to crash a couple few times. Whatevs. Free and open source and I'm grateful for it.)

Screenshot of successfully opening SVG export from OpenStreetMap in Inkscape
Successful load of OpenStreetMap SVG export into Inkscape

(1a) I initially grabbed the 'Standard' map layers from OpenStreetMap. That's entirely too much data to munge. Trying the "Tracestrack" map layer. Alas! Tracestack is not a downloadable/exportable layer. Only "Standard", "Cycle Map", and "Transport Map".

(1b) Let's see what the cycle map give me! Well, that's really not much of an improvement. Still hundreds and hundreds of layers in Inkscape.

(2) Still OpenStreetMap, but Guillaume has suggested "if you want just the buildings or just the streets, I'd use qgis, the quick osm plugin, and export to svg" - so let's try that next.

(2a) Really enjoying the QGIS tutorial. What was it I was trying to accomplish again?

Screenshot of successfully opening OSM export from OpenStreetMap in QGIS
Successful load of OpenStreetMap OSM into QGIS
screenshot showing OSM-available street names successfully displaying in QGIS
Street names, I got 'em baby.

(2b) Grabbed the "CycleOSM" map layers from OpenStreetMaps. This map layer version permitted me to grab a section large enough to include the two bridges, but with few enough objects to allow export directly from the web version of OpenStreetMap. The export is in '.osm' format, supported by QGIS (phew) (2b1) in classic fashion I lost 30 minutes struggling to understand why my .osm wouldn't load up per the training modules and forum postings, but the actual problem was my download choked and the .osm really was a 2kb file with a single point node on it. I was not failing at the 'file open' step; I had already failed at the 'data acquisition' step.

Screenshot showing mix of street names and subway or bus line names displayed in QGIS.
But which names really

(2b2) extra fun side quest as I waste time trying to figure out why the QGIS software is suddenly unresponsive, which is actually the screenshot of the QGIS software not responding to clicks.

(2c) To get street labels to turn up - double-click "lines" layer; "Labels"; from the Value drop-down "name". However - that gets me All The Names, including subway and bus line names. I'm looking for less. Ugh no, I'm looking for different. Names like "Flatbush" are missing, and "BMT Brighton Line" appears instead.

(2d) This has been successful enough to give me a path I could brute force a laser cuttable map from. Pause here and make one more attempt before pursuing the brute force way forward.

(3) OpenStreetMap as a direct data source in QGIS. Oh wait, that's what Guillaume actually suggested above. Heh, takes me a while to listen, don't it.

(3a) Install the QuickOSM plugin. I ran the test query (key=amenity, value=toilets, town/village=London) and holy high hell but this feels like magic. It loaded two layers directly into QGIS! I guess I wouldn't have appreciated this if I hadn't done (1) & (2) first.

(3b) Identify the key-value pairs and the anchor words that get me what I want out of Brooklyn. So that means going to the Open Street Maps docs! ------ Slow your roll! If you continue down the QuickOSm user docs you find there are presets. Let's see what's in the downtown Brooklyn preset

Screenshot showing successful load of QuickOSM import of OpenStreetMap data into QGIS.
QuickOSM import of OpenStreetMap data into QGIS - corresponding to "(3c) Map preset > Urban ; In = Brooklyn"

(3c) Vector > QuickOSM > Map preset > Urban ; In = Brooklyn. Well that's everything I need for sure. So freaking easy once found.

(3d) key value pair reference for Open Street Map https://wiki.openstreetmap.org/wiki/Map_features

(3f) Vector > QuickOSM > Quick query > Preset = "Highways/Streets"; In="Brooklyn". Only checkbox-to-display the layer that looks like streets - it's the second "OsmQuery" in the way it ran today. Then zoom to Bridge Street. Then apply street labels by double-clicking the layer name > Layer Properties > Labels > Single Labels > Value = "name".

Screenshot showing QuickOSM query results for just streets in Brooklyn, with street name labels displaying
QuickOSM import of OpenStreetMap data into QGIS - corresponding to "(3f) Quick query > Preset = "Highways/Streets"; In="Brooklyn""

Hiccup: Saving!

[edit | edit source]

Well thank god I took a break to snack on Nan Xiang Express bok chow. I shut down my computer and upon reloading the project had no content! Had I been working into the wee hours (like my youthful unhealthy self used to) I would have fallen entirely apart. Instead - little more manual reading and:

(1) Right click layer, make permanent save as a flat file format (I used "FlatGeoBuf")

(2) Load that permanent layer up as a new layer

(3) Save the project. Optionally delete the temporary layers you no longer need or want.

Check your work by closing the app; shutting down the computer; walking away; having a healthy green snack and coming back and reloading the project. Phew, it's still there.

Screenshot of the map area with streets and names loaded up in Inkscape
Successfully got the PDF exported from QGIS imported into Inkscape

Choosing the map extent and outputting

[edit | edit source]
screenshot of layers in Inkscape
layers created for names, streets, skinny streets and delete-me streets

As I get more comfortable in QGIS, I am taking fewer and fewer notes. Upshot here:

(1) In QGIS define a spatial bookmark that covers the theoretically interesting area.

(2) In QGIS Project > Import/Export > Export Map to PDF > set the Calculate from Bookmark to your selected bookmark. Save.

(3) Open in Inkscape. Choose "Internal Import" so it attempts to preserve text labels as typography.

(4) Successfully opened in Inkscape! Wooooo!

Refining the map in inkscape

[edit | edit source]

(1) Export to an SVG. Close everything out and reopen the SVG working file for safety.

(2) Move names to their own layer. Move truly excess streets to a layer named 'delete me streets'. Interesting paths that aren't properly streets move to a layer 'skinny streets'. This lets me work streets and names separately, while feeling confident I haven't permanently deleted something I'll want to bring back later in edits and refinements.

(3) Current attempt: Display the 'streets' and 'skinny streets' layers. Convert to a bitmap with Edit > Make a Bitmap Copy. Move the resulting bitmap to its own layer and SAVE.

(3a) Convert that bitmap to paths with Path > Trace Bitmap > Edge Detection setting. Amazingly that sure seems like it works!

(4) Test cut on May 19 showed that I had shapes not lines. The solution attempt underway is: make a first path by doing "Make a Bitmap Copy" and then "Trace Bitmap" with Edge Detection setting. This gets me some thick streets. Then do the same thing again, emptying out the fill and using "Trace Bitmap" with "Centerline Tracing (autotrace)". Then select the lines and modify the stroke to "Hairline." This seems to have gotten me a set of streets with hairline outlines, which will support cutting.

Screenshot of Inkscape settings for edge detection method of converting bitmap to path
Edge detection method
screenshot of path trace settings for centerline method
Centerline method

Skipping ahead to a test cut on May 19 at the space

[edit | edit source]

Saved as an svg in inkscape. emailed it to myself (a low value email account) and opened it in Adobe Illustrator.

Set the "Stroke" to 0.01pt in toolbar. Saved the file.

File > Print > Setup button > "Epilog Engraver WinX64 Fusion" then Preferences button.

Selecting "combined" since I have the grid identifier "a0" on it.

oh boy I found some notes on Laser Power#Settings for the new 60W laser using the 2" lens so now i'm setting up the felt sheet with making tape.

eh - felt is porous so it can't focus isn't meaningful in 2025. we use the focus manual tool now! I'm just going to let her rip and see what happens. First attempt:

speed power freq
40 50 800

no such setting. going with 100%

It worked just fine!

Test cut May 26 at the space

[edit | edit source]

(had some medical stuff, no surprise there, so this project got put down for a week)

Attempt:

(1) email Inkscape svg to self

(2) Open in Adobe Illustrator. Ensure stroke is set to 0.01pt. Save file

(3) File > Print > Setup button > "Epilog Engraver WinX64 Fusion" > Preference button. Select "combined" to test both hairline and raster of the street names. Double the speed based on the test cut from May 19.

resolution speed power freq
vector not applicable 80 50 100%
raster 400 50 50 50

On the final print box - select "only visible layers" and "do not scale"

The raster is cutting all the way through at resolution = 400, speed = 50, power = 50. Try resolution = 400, speed = 100, power = 30 next.

(4) Do all the safety checks on the laser itself then run a red dot, then run a test cut.

Findings

[edit | edit source]
  • Street names should not cross boundaries between sheets - lining up will be to painful
  • Rastering the street names takes for ever - consider doing them in outline, or minimizing how many you do.
  • longs streets should not cross boundaries between sheets - Adams Street, Myrtle Street are examples. Get all of a street onto a single sheet of felt

May 30 Thinking thoughts about fonts - and ugh but I have to choose a font earlier in the process! Once I execute "make bitmap copy > trace path" it's no longer lettering it's just curves. To change font, go back to a version recently exported from QGIS. I'm working with "Bridge Street Project layers of thickened lines.svg" on May 30.

Drat! No! You knew this! The moment you convert the QGIS into a pdf and import it into Inkscape using "Internal Import" you lose the fonts. The letters just become curves!

June 3, 2025: thank god I take notes. Day 10 of keto and my brain cells just function differently than I'm accustomed to. Working with file Bridge Street Project May 30 at NYPL in QGIS-LTR. I've downloaded a personal use only license of Whitney - the classic font created by Tobias Freres-Jones for the Whitney Museum [https://frerejones.com/blog/designing-whitney] (I started/ended with Whitney around a deeply enjoyable chat with a craft night visitor about his time at NYU Abu Dhabi and the font coursework he did there, including time spent with Wissam Shawkat). Made it available to QGIS by "adding fonts (.ttf or .otf) in a fonts subfolder of the folder containing a given project file (.qgs or .qgz). Those fonts will only be accessible when viewing that project." <-- if that ever worked it doesn't work now. So now trying "By adding fonts (.ttf or .otf) on the device in the folder <drive>:/Android/data/ch.opengis.qfield/files/QField/fonts. Those will be made accessible to all projects and individual datasets." Why do I insist on attempting to follow application instructions, when the real answer on a Mac is do the Mac thing. I used Font Book to install the .ttf files, like a normal human would. Going with Whitney Light 10 point. That having been settled, I now must repeat the steps from the start.

By making different selections during export from QGIS (Advanced Settings > Text Export > Always Export Text as Text Objects) and during import to Inkscape (certify Whitney Light is in List of all PDF Fonts, then Delete missing font text) , I was able to preserve the letters as letters.

Jun 7 once more into the breach with feeling. Freya has written, quite rightly, to see what I intend to do with this project. Seriously girl it is time to get cracking. Thank god I left myself some notes in my little Everglades notebook.

Working file is currently "Jun 7 import from PDF at Belafonte library preserved text.svg". Next actions are: (1) label the street names and assign to a layer; (2) delete the delete me streets you didn't like in a previous draft; (3) put the skinny streets to preserve on a layer; (4) put the rest of the streets on a layer. (5) Clip the map to a less large size, though not to your absolute final trim. (6) bitmap to path 2x and then (7) Take it to NYCR AND YELL FIRE THE LAZZZER!.

September 1 2025 Well that was a nice break. I spent a lot of beautiful time in the woods, over by the ocean, saw family and hung with my childhood pals. We lit sparklers, threw poppers and got in the mildest possible kinds of trouble. Hell nobody even drinks anymore and we're all in bed at dark so we can rise with the sun.

This entry is just to try to remember where I left off.

I got a Mood Fabric membership, bought a few yards of acrylic (?) felt - not the expensive wool stuff. I haven't burn tested it yet, so no cutting tonight.

My whole goal is just to crack this page open, read it and then summarize the state of affairs so I can actually restart the project the next time I sit down.

Okay -- so read. Now. Read.

(1) go find the little Everglade notebook.

(2) wow the way I name files. So there is no "Jun 7 import from PDF at Belafonte library preserved text.svg" file but there are subsequently dated files. E.g. "Jun 7 import from PDF at NYCR preserved text.svg". There are files with names indicating I worked on them Jun 7, Jun 9 and Jun 10th all in the folder "Retry from convert bitmap to path with fonts." So maybe open the latest one and take a look? (Oh and I read a bunch of murderbot diaries this summer so now my thoughts are in murderbot voice: "yeah that would be dumb. be a smart SecUnit and make a clean backup copy before we touch anything okay.")

  • oh look at that I already made a backup copy? nope I worked the files on June 10 and they're all minutes apart.
  • Today I made a backup "Jun 10 import from PDF at NYPL first bitmap SAFE BACKUP SEPT 1.svg" (hell yes allcaps-ing my safe backup claim. betcha I overwrite that 'safe' backup file pretty soon)
  • Reconstructing from memory - I think I spent a lot of manual time just labeling streets with layer labels in the June 10 file.
  • So, next steps are:
    • Working with "Sept 1 working file.svg"
    • "Unlock all" to get access to the text layer:
    • womp womp

hi george

The Sept 1 working file seems to have all street names labeled and on their own layer. I am mildly curious about why I chose to do that. It was a lot of manual busy work. Maybe I really needed the relaxation of doing some manual technical labor. It also looks like I already removed a bunch of streets and made some small/some large. The streets themselves are on a single layer, with layer-name 'first bitmap cophy'. So maybe that means I completed 1x of the 2x 'convert to bitmap' steps mentioned in regard to the "Jun 7 import from PDF at Belafonte library preserved text.svg" file, above. I think this corresponds to having completed step (3) in "Refining the map in Inkscape" above. So let's try doing step (3a) "Convert that bitmap to paths with Path > Trace Bitmap > Edge Detection setting" and see what happens.

September 2 in teh NYPL Rose Reading room (left the house around noon, procrastinated until 5fricking54 pm but at last, here I am doing something I actually enjoy doing but somehow refuse to star on at any reasonable hour of the day).

  • Did Edge Detection on my nice green streets using the settings in Sept 2 edge detection screenshot.
  • This generated a new layer 'path1'. Hid all other layers. Did not rename the path1 layer (it's temporary)
  • That all seems wrong. Restart.

Working from a fresh "Sept 2 at NYPL" copy of the Sept 1 working file:

  • Path > Trace Bitmap > Edge Detection
    • Hide the 'first bitmap cophy' layer
    • should give me thickish lines and if I zooooom waaaaay in, I can see that the lines are objects, with handles on either side of the thing that I want to believe is a 'line' but is actually a 'shape'.
  • Edit > Make a Bitmap Copy
    • Hide 'path1'
    • Rename the new bitmap to 'second bitmap cophy' (I'm using 'cophy' to stay consistent with my extant typo)
    • It seems weird that the bitmap is not clickable, but whatever?
  • Path > Trace Bitmap > Centerline tracing (auto trace)
    • Hide 'second bitmap cophy'
    • Now, zooming all the way in, there are only singleton handles on the line, indicating it is an actual real live line.
  • Go to "Fill and Stroke"
    • change width from 1mm to 'hairline'. The digit part of the width selection will grey out once you select hairline.
    • name the layer 'cuttable street path'
  • lock the cuttable street path layer
  • unhide the names layer
  • SAVE THAT FILE
    • Made a copy of it and called the copy 'Sept 2 at the NYPL SAFE BACKUP'

Next up:

  • create a fresh clean working file
  • remove excess street names, make the streets names all pretty and ish
    • does any one say 'ish' anymore? I doubt it.

Sept 4 2025 at NYC Resistor

  • Cleaned up some street names at home. Working file is currently "Sept 4 at Hungarian cleaning out street names.svg"
    • yes, these files names are a map of places I go to get work done.
  • Did a burninator test on the synthetic felts from Mood Fabrics: two colors of green and two thicknesses of black. Had a fun moment where the first test burned solidly clearly chlorine green - fortunately everyone around me knew that it was residue from the burn test demo that Katie does during laser class on a vinyl record to show people the color that will kill them (and mess up the laser optics). Once all the vinyl residue was burned off I ran the test and everybody burned clean yellow and orange.
  • Now:
    • Cut one paper test of the full image on a 20 by 32 sheet of paper, streets only.
speed power freq
110 lb water color paper 90 60 20

Cutting now. Seems fine?

    • Repeat with same sheet of paper, no streets, the names only
      • Check that the names raster and don't cut through.
      • Use these settings for raster on posterboard paper - there are no suggested settings for paper/cardboard rastering, so I think I'm going to go with defaults
speed power freq
default raster 50 50 n/a
  • :Then
    • Layout two full felt panels and print a sample of streets on each color.

Copying in my findings from May cuts:

  • Street names should not cross boundaries between sheets - lining up will be to painful
  • Rastering the street names takes for ever - consider doing them in outline, or minimizing how many you do.
  • longs streets should not cross boundaries between sheets - Adams Street, Myrtle Street are examples. Get all of a street onto a single sheet of felt