Would you like potential fixes submitted as a Pull request? #8
Replies: 19 comments 20 replies
-
|
Hey Colin, Thanks for reaching out. I would welcome your changes and make it work properly on a MAC. I a few bug fixes in my work to push up shortly. I'm not a Mac user so I was only guessing how make it OS independent. I have been trying to make the KMl and HTMl a little more feature rich. I struggle with git a bit so I'm not sure I can make a pull/merge work on the first try. (My regular job is to lead IT Ops guys, but I miss development so I do this.) I'm away on holidays for a week but will followup after that. Darren |
Beta Was this translation helpful? Give feedback.
-
|
Thanks Darren. I'll start by describing the issues I have seen, and my current minor fixes, and you could either look to roll those into your near-term bug fixes and push from your side, or if they remain in your next release then I could submit a pull request and/or further details. My comments below are based on tag v0.2.6.0 as downloaded from GitHub. Showing version: In summary, relating to running GUI version as
What I started looking into, but haven't yet figured out, is that the HTML options for individually enabling/disabling birth/marriage/death types of markers does not seem to be working. The overall "Markers" enable/disable works fine, but not "Marker for when <Born/Died>". In more detail: (line numbers might vary slightly where there is more than one edit in the same file) gedcom package: File: gedcomVisualGUI.py; Line 278 File: gedcomVisualGUI.py; Line 281 File: gedcomVisualGUI.py; Line 1228 File: gedcomVisualGUI.py; Line 1235 File: gedcomVisualGUI.py; Line 1485 File: gedcom-to-map.py; Line: 77 File: gedcomoptions.py; Line 93 and perhaps also 96 File: gedcomvisual.py; Line 140 |
Beta Was this translation helpful? Give feedback.
-
|
Okay, so I have folded all your changes into the next update. It includes work on the People Dialog as well as work on Soundex matching for the HTML family relations. I will publish it (2.6.2) tomorrow after doing some more testing on my own code updates. (You found a lot of sloppy bugs). |
Beta Was this translation helpful? Give feedback.
-
|
Thanks Darren. I have just updated to v0.2.6.3 and it works fine for me on Mac now. Great. A few quick thoughts and observations (I'll try to be more directly helpful sometime rather than just a commentator, but in the interests of time I'll start with this). Input File:
HTML Options:
KML Options: If I recall correctly, it was important to set the HREF link to a PLACEMARK ID, since Google Earth didn't appear to be able to hyperlink / fly-to a POINT, only a PLACEMARK. I spent a while battling this and finding explanations that it couldn't be done, but this compromise/implementation did work for me in the end. I also used TIMESTAMP in the KML PLACEMARK, which then enabled the "time slider" in Google Earth (Pro), to be able to filter and animate people and places through the time period covered by the KML file. Example extract of KML showing an HREF in the first PLACEMARK (id="7076"), which flies to the second PLACEMARK (id="7079"): |
Beta Was this translation helpful? Give feedback.
-
|
(Thanks Darren. I'll look closer another time ... but before I go I should explain better than I did above ... with the HTML marker options enabled/disable, what I'm seeing is that I don't seem to be able to selectively disable different types of markers: if markers are enabled then all types of markers are generated even if I try to disable some types) |
Beta Was this translation helpful? Give feedback.
-
|
Evening Colin, Ah now I understand... sorry, I may have miss-read your first posts... You are correct, now that I looked thru the code, I see that I lost control of displaying birth and death as controlable points, so born/death checkboxes don't do anything. That need refactoring. I got some of your suggested formatting into the ballon. I did fix the timespan for lines and and timestamp for points. I never knew about the time spanning function. It starts with everything off in ArcGIS, so I will have to tweak that a bit more. At the current times the balloon does not iterate the child, but it does show: Your right trying to get the ballonflyto to work, it challenges... I will keep working on it. the problem is once a placemark is created, with simplekml, I'm not sure I can go back and edit the placemarks to update the forward reference to a person who is not in the list yet in the generation of the kml. I will figure out how to hack it. I have chagned the Input/output to real buttons. Need to work on some styling for it and refactoring. Should have this release ready by next weekend. One question ... is it better to have two end placemarks and 3rd placemark with a linestring (as above) or combine the points with the linestring in one placemark? The implications of combing them is that you cannot tell which is the birth point and which is the death point. |
Beta Was this translation helpful? Give feedback.
-
|
Well, that is a nice object driven code base compared to my old school brute force procedural code base. The code cleaned up very nicedly. There are a number of things you accomplished in there that, I was trying to by my brute for code can really benefit from what you are doing. I like you geocode, yaml. much better than my hard coded approach. I like your location enrichment... create to @lmallez for those based classes that I used for the parsing. Reading over your code, there is a lot of 'opportunity' for me to improve my code. I really like your idea for people and location summary. Maybe looking over your kml output and I determine what I'm doing wrong in my balloonFlyto. Pushing the update of where I am now. |
Beta Was this translation helpful? Give feedback.
-
|
Thanks. My summary files were motivated by wanting a way to review all locations used in my tree and improve consistency and formatting to better enable geolocation and mappingSent from my iPhoneOn 30 Aug 2025, at 20:10, D Jeffrey ***@***.***> wrote:
Well, that is a nice object driven code base compared to my old school brute force procedural code base. The code cleaned up very nicedly. There are a number of things you accomplished in there that, I was trying to by my brute for code can really benefit from what you are doing. I like you geocode, yaml. much better than my hard coded approach. I like your location enrichment... create to @lmallez for those based classes that I used for the parsing. Reading over your code, there is a lot of 'opportunity' for me to improve my code.
I really like your idea for people and location summary.
Maybe looking over your kml output and I determine what I'm doing wrong in my balloonFlyto.
Pushing the update of where I am now.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Okay, v0.2.6.4.1 has a FlyTo that works and Children. Still working on styling the balloons |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
Are you having to do the manual edits 'manual_correction:'? For example in 'Barnwell Church' did you edit the Long for that or come up with an alternate location name. I have long since gave up on trying to correct the output from looking up something in OpenStreetMap. My plan was to someday use some of the other columns in the CSV cache... Sigh it looks like my 'used; column is all missed up on updates (TODO). I had looked at having a cache for every GED file, but depending how you reuse an address, and fix it, then you might not have the benefit when you do other lookups. As well, when you dump your family from some of the tools, they may generate a random file name, and you end up looking up all the same addresses over again. One suggestion would be to add a column into a single cache file to reference the names of the GED where that cache value was used, if the goal is to keep you a 'workable' list limited to the latest people you added. I was looking to do a 'fix up phases' for the substitution. For example, sometimes there are useless phases in the address like: "po box" or 'of' or 'part of' then you get into Regex pattern match precedence ('part of' before 'of'). Then there are other subs like but then it got into you need to match the whole word, and make sure it is positional correct relative to other names in the address. "town, state, country", but the country is missing a lot. That is why my gpslookup looks broken as it recurses. I had run some many GED files records thru it, that it can force fit addresses for cases that are really a stretch. I do like how you have been able to dig out the country/continent from your addresses. (Filing they idea.) Anyway, restructured the GUI and corrected the markers in HTML mode to work properly. I think it makes the experience better. On the KML side, the birth death should work. Still thinking about the mid life. New version push (don't use the tag, I missed 2 files (what a mess). |
Beta Was this translation helpful? Give feedback.
-
|
Interesting. It sounds as though your GEDCOM file has some control characters in it, and my fix_gedcom_conc_cont_levels function is trying to open it as a plain text file and failing on that control character. It looks as though we should be able to easily ignore illegal characters by adding "errors=replace" into the file open function call, e.g. changing from: to something like: If this doesn't work then we can try being more selective about the file format, or looking closer at the control characters in the file and deciding if we need to actually do something with them. |
Beta Was this translation helpful? Give feedback.
-
|
That worked. as a fix for reading. It appeared to do a much better job of address resolution than my approach. Your algorithm for finding the lat/long works much better than mine. It resolved 96% of my addresses. My approach was only 64%. A major improvement. I need to fold that into my geocoding. Then I got this at the end. I hope it saved the cache along because that took 3 hours to work thru my addresses. ... oh good it did. At the end I had KML, People and Places before this error. I did a sort on the address list and had 7 duplicates. out of 1613 ... weird For Found_Country False here are some of the places. It still found Lat & Long but Found Country = False |
Beta Was this translation helpful? Give feedback.
-
|
I reinstall the GIT and now it need postal. Seems like I'm missing a few setup parts for postal. Postal is harder to install on Windows than Mac. I assume libpostal will enrich the results, but I'm not ready to go down that path yet. I rolled back to https://github.com/colin0brass/gedmap/tree/86559c0f8c5a9ef6ef82f3c6d6368685b4fcd3fe (pre-postal) and applied the utl-8 fixes. I finally got the heatmap. The Goe_cache is 97.8%. I'm preplex, you have the geocode lat/long but that does not come with the country associated with it?
On a different note, I logged back in to myHeritage and the list of analysis they do has improve. Here is the list #9 |
Beta Was this translation helpful? Give feedback.
-
|
Thanks; I've tried switching from libpostal to deepparse. I haven't paused to examine how good it is, but from a quick test it seems to be working. See latest on GitHub. |
Beta Was this translation helpful? Give feedback.
-
|
I have start to refactor and add your code in pretty much unmodified. I refactored the orginal code to include you LatLon replacing Pos. So far I have location (split into location and latlon), geocode, goecache. I will work to connecting into your files as is, as much as possible... via a rework of geolocate_all and associates parse people. I tried to look for an alternate, glad you found one that fit in so well. That is big set of packages it pulled in. Let see what this does (it did the requirements without issues). It resolved the addresses so fast, 97.8% of the addresses found a geocode address (not sure if they are all right as there are 1600+) So it ended up withe same heat map as before, but it completed in just under 9 minutes??? I had cleared out all the file and run it again... that was Superturbo charged. Pretty amazing! In fact I wonder if doing any lookup on OpenStreet map is even required, since they all seem to come back without any better result. I'm not sure the found_country is that or found location. For example...
All those addresses are correct, but the country should be Canada for all of them. But the lat/long is what it should be. I was expecting the model memory size to be much larger but it was only about 600 MB. Wow... just wow. |
Beta Was this translation helpful? Give feedback.
-
|
Sounds good. I will take a closer look at the caching and country look-up. For the surprisingly fast speed, had you definitely spotted and deleted/renamed both the global and specific geo-cache files? Both in the input folder. I did agonise over whether to have a global geo-cache and specific one per input file ... I instinctively worry about pollution, complication and risk of unpredictable and difficult to reproduce geocoding over time depending on which other GEDCOM files have been processed and updated the geo-cache. File paths: |
Beta Was this translation helpful? Give feedback.
-
|
I'm still trying to fold your code into this project. I have to say, you are programming at least two level of skill above my poor procedural python codings style. I have done C++ and C# but never took formal training in Python and it shows. Everytime I see a super(), I'm overwhelmed, but it. I'm tried to split geocode.py and splice it into replace my gpslookup. Each time I try and debug thru it, the class inhertance is not correct, or the split use of your GeolocatedGedcom class, need to be referernece to my GedcomParser... as I tried to keep my Gedcom parsing... as well, I'm trying to move to a different release (pre LLM and pre postal). As I do the merge, I'm trying to preserve you code based and orginal files as much as possible. There are few items which are cause modes to the code, Pos -> LatLon, Human -> Person... |
Beta Was this translation helpful? Give feedback.
-
|
Well I slammed it all together... not sure it was a great idea to do a branch for that, but I should be able to push that into the main after some more testing. |
Beta Was this translation helpful? Give feedback.







Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
(UPDATE 15-Aug-2025: correcting my note of gedcom-to-visualmap code version: using tag v0.2.6.0, not v0.2.5.4 as I initially wrote)
Hi @D-Jeffrey , thank you very much for developing and sharing this program.
I had done my own (unpublished) GEDCOM to KML geocoding (with location caching) and visualisation application too, but you have many more features, including the rather nice heatmap visualisation.
It took me a couple of false starts with your program before I got it working for me on Mac. I first tried unsuccessfully in 2022, and then came back to it in 2025, still failed (with current v0.2.6.0), but decided to try harder and made a few minor code changes to resolve some run-time errors.
I can imagine you might well have made further changes since your current latest GitHub version (v0.2.6.0) released 30-Mar-2025. Would you like potential fixes submitted as a Pull request? Or would that just get complicated vs your latest local code-base?
Thinking about it, I suspect there could be a few options including perhaps:
(I only needed to change a line or two in each of about 4 python files, plus adding an "init.py" file to help recognise gedcom as a package, so it wouldn't be hard to communicate the changes either way)
Please could you help advise if you would take any such suggestions, and if so how you would prefer?
Regards
Colin
Beta Was this translation helpful? Give feedback.
All reactions