Skip to main content

Posts

Showing posts with the label gis

The Project TouCans CZML Tester: Another o3-mini Rapid Prototyping Tool

 Did you know you can store czml maps in github and then load them into the Cesium Sandcastle to try things out? I didn’t for the longest time, but now I do! I recently ran into an issue where I needed to test the differences between several different versions of the same CZML file with one incrmental change per file to debug an issue I was seeing on my maps. I asked ChatGPT to write some JavaScript code that would allow me to simply place the URL into a text input box, click a button, and view the newly specified map on a web page. It wasn’t quite ‘vibe coding’ but a little while later, I had this tool for working through my test maps. You can load any github (or other cors-exporting-happy site) czml file to visualize it.  As an example, I walked through my use case–debugging the slider position on an animated czml map of ham radio QSOs Finally, if you’d like to play around with the code o3-mini and I generated as the basis for a project of yours, it can be found in this gis...

Data, Debug, and Past Ham Radio POTA Activations

 It's kinda awesome to have data! Earlier today I was working on the elevation profile project I've been writing about throughout the week. I've moved the project up to the point where an enrichment provides the elevation at the transmit location of the QSO, (my end of the path.) Looking at the results, at first I thought I must have introduced a bug at some point. The first two QSO elevations were meters and 3 meters high. That seemed awfully close to sea level, especially considering that most of my POTAs are made from the sides of various mountains. Looking at the table row for the 3 meter QSO I inspected the date: March 14th of 2024. I checked my photos to see where the gang and I were on that day and found this So! We were at just about sea level, that being the sea just to the right-hand side of the picture. What about the two meter high QSO? At this point it occurred to me that I didn't need to look back at pictures to see where we'd been on the 23rd of Ma...

Paradigm Shift: Seaparating Data from Views aka Elevation Profiles aren't Ham Radio QSO Database Material

 I've been slowly but surely working through this week's ham radio QSO elevation profile project. The way I want to use the tool (Datasette) doesn't feel like a good fit for the tool. That's made things more difficult. In short, here's what I hope to achieve: Plot a partial QSO path for each contact from the transmitting station (me), about 10 wavelenghts or so out towards the receiving station, so about 200 meters or so in this case. This path should be on the kml map of the QSO This is done. Place a png picture of the elevation profile into the Datasette row for that QSO. This is what this post was about. Add this picture to the kml map as well. So! I think I was wrong! The point of this whole operation was to have elevation profiles directly available in kml animated maps. I wanted them to be automatically included with each QSO, but my ownw specification was that they should be in the map. Not the database! Basically, there's data, the dates, times, callsign...

KML and Datasette: Automated Elevation Profiles

Automating yesterday's post . Here are the steps to add elevation profile paths to any QSO map: Duplicate the datasette-haversine-point-to-path repository, renaming it datasette-gis-partial-path This should expose a method for lat and a separate method for lng The inputs should be the beginning and end of the path and the number of meters the elevation path should extend The package will use haversine. It will also repackage a few of the earthmid methods Given the inputs, calculate the entire QSO path length using the haversine method. Then, divide the total distance by the input partial distance to get the number of 'partial' length segments exist in the the entire path. Call partial_path_lng and partial_path_lat to get the coordinates of the end of the first segment. Add a new linestring to the kml template. The segment starts at the transmitting station and ends at the coordinates returned in step 3 above. Label the new segment with the receive station's callsign an...

First Release of the Datasette gmap geocoding Enrichment

 I released my first Python Package last week! I've been using Datasette to analyze my QSO logs for several months . It's been a really useful tool since it's already setup with quite a bit of mapping fucntionality via various plugins . At the same time, the gang and I have been working with the Google Maps API and kml files to map the paths between amateur radio staions in our QSOs.  A few weeks ago, Simon Willison announced Datasette Enrichments . One of the first exampels was a geocoder (an enrichment that produces the longitude and latitude of an address) using opencage . This opened my eyes to the possibilities of taking the gang's and my original mapping utilities I mentioned above, and implementing them with a number of datasette enrichments and plugins. What was missing however, was a way to do this with Google Maps instead of opencage. Missing until last week that is! The gang and I worked through creating the google maps geocoding enrichment . Then, I worked...

Software Project Plans for December: Two Datasette Enrichments and a Gladych Podcast/Vlog

 We have new software projects to play with here at the KD0FNR/KO6BTY ham shack in December. First, Datasette announced a new toy to play with! Enrichments If you've been regularly reading, or watching the repository for the logging software the kids and I have been building for oursevles, you've seen me mention Datasette before. It's a tool for browsing data sets using SQLite, and then applying various analyses to the data. The kids and I have used it to map  QSOs in a number of different ways. Simon Willison announced that the tool now feautres something called enrichments . What do they do? In short, they allow the user to apply operations to data that can subsequently be written back into a database. The post linked to above demonstrates how enrichments work using a geocoding example. The example uses OpenCage to geocode addresses. We've been using the Google Maps API here to do a similar thing, so the first obvious project is  Creating a Datasette enhancement th...

Today I Learned: Creating Links to Google Earth Web Maps

I found a workaround for providing links to Google Earth web maps. Up until this morning, to share a map with you like the following from Google Earth: I would have had to point you at the associated kml file on Google Drive, and then instructed you to open it by clicking on the 'Projects' menu in Google Earth, then clicking on the 'New Project' button, selecting 'Import KML from Google Drive', and then pointing it at the kml I mentioned above. So, instead, I just linked—embedded actually—shared QSO maps from Google's almosot forgotten—in some circles—but still very functional MyMaps site. Here's the map on MyMaps: Today while I was looking at a map to embed for  my Mt. Davidson SOTA earlier this week, I noticed that there's a link to view the map in Google Earth. I clicked it, and sure enough, the map appeared in Google Earth. I then copied the resulting, final, link into an icognito window, and got back a Google Earth map of the same area, b...

QSO Maps Fully Automated

Rockmite ham radio QSOs are now mapped in one fell swoop without me having to look up addresses or geographic locations for receiving stations. rm-rbn-history now creates kml maps from QSO data automatically! The mapping program for QSOs from the Rockmite has come to full fruition, (at least for the moment). With an input list of QSOs like the following POTA Organ Mountains de KD0FNR 23_04_25 -106.557943661198000 32.371302453347500 K4SUE,2023/04/25 02:35:00,599,599 W7OQ,2023/04/25 02:07:00,579,599 KB4N,2023/04/25 02:12:00,559,579 W6DX,2023/04/25 02:15:00,449,559 WB8DTT,2023/04/25 02:40:00,599,599 W9MET,2023/04/25 02:42:00,559,599 WB2WGX,2023/04/25 02:49:00,339,599 KG4ZQZ,2023/04/25 12:27:00,559,559 WB8DTT,2023/04/25 12:32:00,559,589 KF9R,2023/04/25 12:35:00,559,599 N8BB,2023/04/25 12:35:00,559,559 NG6R,2023/04/25 12:38:00,559,599 KA9DCU,2023/04/25 13:00:00,559,579 KB3AD,2023/04/25 13:02:00,559,589 N2EM,2023/04/25 13:04:00,329,579 WK4DS,2023/04/25 16:08:00,339,449 the repository autom...

Today I Learned: pytest output

 Getting pytest to display output, even if the test case passes; sorting tuples by datetime Frequently, I find myself needing to watch print statements during development as pytest calls new methods. Today I learned how to force passing tests to write to the screen. The -rP option is the answer to that. I'm constantly impressed with how much pytest just already has implemented. Along the vein of 'wow, it just works', I was surprised to find how easy it was to sort tuples by date . On a side note, the StackOverflow question linked to in the previous sentence closed as a duplicate, and I don't think it should have been. I mean sure, there was a more general question that could be construed to be the answer if you already knew lots of Python, but that's kind of beside the point I think. If I knew enough python to make the construction, I probably wouldn't have asked the question . I mean I didn't ask that actual question, but you get the idea.

Cerros de Los Lunas SOTA de KD0FNR

This summit's a nice, fairly easy hike to a flat mountaintop with six foot tall cedars that worked just fine for suspending a 20 meter halfwave dipole ham radio antenna. Summit: El Cerro de Los Lunas  W5N/SL-015 This was a fun climb just a few miles off the interstate, I-25. I'd forgotten how gorgeous New Mexico rain clouds are, and how much advance notice they give. Where there are little whisps coming down out of the grey cloud, it's raining. It sprinkled on me just a bit, luckily after I was done playing radios. Getting there: The trail mentioned on the SOTA site for the peak—route A specifically—is a big improvement over any other routes I found, (alltrails for example), to the summit. There were a few issues though. There’s no longer a gate at the end of the road. There is a dip in the barbed wire though, and I was able to easily step over. I was unable to find the ‘main’ trail mentioned in the route’ on the SOTA site. I was, however, able to find a small arroyo that I...

Playing Radios at Night: Twenties and the Petroglyph National Monument POTA

 I made one QSO, was heard in Costa Rica, and maybe found a wavelength tall natural antenna tower in Albuquerque. Here's a view from below of the mesa the POTA station was situated on. Park: Petroglyph National Monument POTA  K-0955 . Radio Details: Radio : RockMite 20 Antenna : Halfwave dipole Happenings of Interest   Shyoooo, I was tired. I spent a few minutes debugging the lack of audio when I turned on the radio. In the end, the answer was...... I hadn't plugged in the headphones. I was so tired. It's been a week. Here's the thing though: the antenna was 5.5 ft off the ground during most of the POTA. And, as you might expect from reading any number of ham radio books that exhort the amateur radio neophyte to build a tower as soon as possible, I only made one QSO, to a station a few blocks away. (Actually, I thought that was pretty cool! That might have been the shortest QSO the RockMite ever made.) As you might not have expected—I certainly didn't—the radi...

rm-rbn-history New Feature: RBN vs QSO Icons

Yet another new feature has been added to the ham radio RBN spot/QSO mapping project. I'm really starting to like the way the maps look these days. The latest new feature places 'R' icons at reverse beacon network stations and 'radio station' icons at the sites of QSOs so the two different kinds of activity can be easily distinguished. You can read more about it at github in the associated issue .