Proof of concept interactive starchart

Any help would be appreciated. Basically the new data needs to be imported into my own elite.json, but I haven't got around using EDSC data yet. I can use the TradeDangerous sqlite DB as input, too, basically my dbtool makes a temporary copy of it and makes some adjustments until my own code thinks it is using the proper format.

Let me know what those are and I'll look at making life a little simpler for you.
 
Let me know what those are and I'll look at making life a little simpler for you.

Thanks, but basically that is what my tool does automatically. First the missing tables are added using the SQLite schema in in here (see the end of file), then apply the SQL within the tool (dbtool link above) to it (again, SQL is at the end of file).

I don't think my SQL is any better, it's just structured a bit differently. No big changes though, apart from the extra tables I use for caching.

Oh, and if you think it is very similar to your own SQLite schema then it is not a coincidence. :D

- - - - - Additional Content Posted / Auto Merge - - - - -

Cool!

Step #1 Learn Go (be right back ...)

Are you finished with your studies yet? :D

It's mostly HTML/JS/CSS really. This frontend uses just 3 APIs on the backend: "chart", "search" and "route" which provide similarily structured json.

The old version was heavily based on Go templates, but that is not the case anymore. They are still being used to supply parameters in HTML meta tags and to include fragments to reduce duplication, but this latter is used only for the new navbar.
 
Last edited:
I've put up a standalone version of the project in my Dropbox so people can see where I am with the project without installing Go. NB: there is no UI for the route API yet. Just launch mapsrv.exe and open localhost:6968 in your browser. Click to select, double click to change map view. It's also possible to clone the bitbucket project and use the exe and sqlite files from there, if someone can't install go and can't resist helping me either. :D

Apparently I messed up something because the map needs a very long time to load the first time for many systems (then caching kicks in).

My first suspect was a bug in my octree implementation, but routing uses the same code, and the command line nav.exe (included in the zip) is very fast. It manages to route in around 0.4 seconds, and most of its time is spent in startup/shutdown and loading the json/db.

Code:
d:\tmp\starc>nav -ly 9 contii quikil
route from Contii to Quikil:
 0   0.00  ● Contii
 1   8.63  | Imen Mina
 2   5.97  | Zmeyaaya
 3   7.35  | Jambojai
 4   8.25  | HerniMara
 5   8.86  | Aryanka
 6   7.42  | Bhotho
 7   8.70  | Ayoresi
 8   7.94  | Mu Aquilae
 9   8.88  | Sumel
10   7.98  | Sui Guei
11   8.88  | Abukunin
12   3.55  | Aphra
13   7.61  | V1688 Aquilae
14   8.09  | LFT 1448
15   7.25  | Kini
16   8.53  | Potriti
17   6.31  | Kremainn
18   7.10  | Ngaliba
19   8.63  | LHS 3437
20   5.79  | Ualapalor
21   8.69  | Willapa
22   7.59  | Changthini
23   4.85  | Mantxe
24   6.79  | Aeternitas
25   6.46  | Caelinus
26   8.28  | CD-46 12902
27   7.31  | LFT 1442
28   8.25  | LTT 7509
29   7.96  | L 206-187
30   8.56  | LFT 1349
31   7.73  | Mari
32   7.42  | Mombaluma
33   8.60  | Arangorii
34   7.19  | LHS 263
35   7.25  | LTT 3572
36   6.49  | Luyten 145-141
37   8.78  ○ Luhman 16
38   7.32  ○ Wolf 359
39   8.55  ○ Procyon
40   8.75  ○ G 89-32
41   7.93  | LHS 223
42   7.41  | Chi Orionis
43   6.16  | Ross 41
44   8.05  | V2689 Orionis
45   7.56  | NLTT 15714
46   7.65  | Wolf 1449
47   8.10  | El
48   8.18  | Cupiat
49   8.54  | Kaupolock
50   6.94  | Manguts
51   8.24  | NSV 3315
52   4.18  | Quikil
 Legend:  ●=refuel  ○=station  |=other

d:\tmp\starc>
 
Last edited:
Are you finished with your studies yet? :D

It's mostly HTML/JS/CSS really. This frontend uses just 3 APIs on the backend: "chart", "search" and "route" which provide similarily structured json.

The old version was heavily based on Go templates, but that is not the case anymore. They are still being used to supply parameters in HTML meta tags and to include fragments to reduce duplication, but this latter is used only for the new navbar.

Hmmm some cool concepts in Go. Now to install things on my machine.
 
Thanks, but basically that is what my tool does automatically. First the missing tables are added using the SQLite schema in in here (see the end of file), then apply the SQL within the tool (dbtool link above) to it (again, SQL is at the end of file).

I don't think my SQL is any better, it's just structured a bit differently. No big changes though, apart from the extra tables I use for caching.

Oh, and if you think it is very similar to your own SQLite schema then it is not a coincidence. :D

In your System.csv:

" UNIQUE(pos_x, pos_y, pos_z), "

this is no-longer true, in particular they've chosen to make HIP 24019 and HIP 24020 have the same position and yet be distinct systems. Probably just to mess with us :)
 
Hmm - you might want to take a look at the current iteration of the TD database; you have some nice additional features, but I added some extremely useful additional indices/caches (in particular, I build a map of system-to-system direct links; the routing in current td is extremely fast again).

I grabbed the repo to take a look but now the wife wants me to get back to family stuff.

BTW, you probably want to add exact-match biasing to your lookups:

(master)osmith@osmith-mbp:harmless$ ~/pers/gocode/bin/nav aulin "i Bootis"
Search "i Bootis" matches multiple: '37 Xi Bootis', 'i Bootis'
 
Last edited:
In your System.csv:

" UNIQUE(pos_x, pos_y, pos_z), "

this is no-longer true, in particular they've chosen to make HIP 24019 and HIP 24020 have the same position and yet be distinct systems. Probably just to mess with us :)

It's still true that only one system may exist in one single location, if I'm not mistaken. I mean in reality. It might have more stars or names. For now I've just merged the two, so I have a system called "HIP 24019 · HIP 24020". Perhaps a table called "altsystemnames" would be better, but we'll see how FD fixes this case on the galaxy map. I hear both "HIP 24019" and "HIP 24020" appear randomly when looking at the place in the galaxy map.
 
Last edited:
Wow great work again my friend. I have downloaded and opened on my computer and in chrome I can confirm it does take a age to load up. Love the flashing point where your start location is, and the whole look and feel is very much more polished.

Great work.

Ab
 
Hmm - you might want to take a look at the current iteration of the TD database; you have some nice additional features, but I added some extremely useful additional indices/caches (in particular, I build a map of system-to-system direct links; the routing in current td is extremely fast again).

I grabbed the repo to take a look but now the wife wants me to get back to family stuff.

BTW, you probably want to add exact-match biasing to your lookups:

Yes, I fixed the name lookup bug yesterday. Apparently in my fuzzy search test case made for Beta 2 there was no name that was a substring of another in the dictionary.

Nice additions in the TD database! As for routing, the current octree based A* seems to work well for now.
 
Last edited:
Wow great work again my friend. I have downloaded and opened on my computer and in chrome I can confirm it does take a age to load up. Love the flashing point where your start location is, and the whole look and feel is very much more polished.

Great work.

Ab

Apparently the density of stars have been increased since Beta 3. The Beta 3 pill had only a 37Ly in radius, but my maps are 50Ly in diameter. Reducing the density a bit sped up load times from 15-20 to 3-4 seconds. The new version is available for download.
 
The map has been updated, feature-wise it has everything the old map had including routing. The performance problems are still there, but with caching this should not be a deal breaker.

Would a progress display be necessary? If so then suggestions to do it right would be appreciated.

The update is also available as a Windows x64 binary download, only from now on from the bitbucket downloads page.
 
Minor update, fixed some UI issues. Systems selected within the route are highlighted in both the itinerary and the graphic, off-chart legs are shown properly. Available for download on bitbucket, too.
 
Hi there OP I see you have mentioned an octree a* route planning algorithm - could you point me to some links? I have recently posted an update on my external Galaxy map but it hit the wall trying to route plan across 20k systems so I had to reduce its search set - I'm interested in learning more about your approach. Cheers!
 
Hey mate for those of us who are not used to using a command line to navigate nor indeed what 'go' is and all the other things mentioned in the new read me, can you make this a little easier? I'd like to see a similar interface to the one before in that I can put in the star I am at and then the destination and go, get the route. Is that doable anymore, the way its listed in the read me, isn't anything I am familiar with at all.

Thanks as always

Ab
 
Hi there OP I see you have mentioned an octree a* route planning algorithm - could you point me to some links? I have recently posted an update on my external Galaxy map but it hit the wall trying to route plan across 20k systems so I had to reduce its search set - I'm interested in learning more about your approach. Cheers!

Hi Adam, both A* and octree are separate concepts, search for either of the two and you'll see plenty results. The articles on wikipedia seems to be good enough. You might have a look on quadtrees as well, if you have trouble understanding octrees, basically they are the same thing. Then what you do in your A* is simply use the octree to search for systems in jump range, instead of walking through all the systems in your database.
 
Another great 3rd party solution to a 1st party problem.

Though I doubt I will be able to use this with the Oculus Rift.
 
Hey mate for those of us who are not used to using a command line to navigate nor indeed what 'go' is and all the other things mentioned in the new read me, can you make this a little easier? I'd like to see a similar interface to the one before in that I can put in the star I am at and then the destination and go, get the route. Is that doable anymore, the way its listed in the read me, isn't anything I am familiar with at all.

Thanks as always

Ab

Hey Arbanax, what do you need? There are now binaries on the bitbucket download page, too. Let me know if you need anything else.

I don't yet know if I can solve the performance problems with my map, other than switching to 3D. The online map should work though as long as you don't change the view often, which should not be necessary.

- - - - - Additional Content Posted / Auto Merge - - - - -

Another great 3rd party solution to a 1st party problem.

Though I doubt I will be able to use this with the Oculus Rift.

Hey, thanks! I don't have a rift yet, so I don't know how to make the map usable for you. Hopefully FD will improve the galaxy map so you don't even need it. :)
 
I've added data entry to the UI. Users can edit system and station details now.

Valid changes are kept in memory and written to disk as a json stream for later review and processing.

Actual storage of the data is not fully implemented yet because it is too late :)

This means if the server is restarted, the changes will be apparently lost. I will import any changes added on my server.
 
Last edited:
Thank you Commander Jameson for focus testing editing the Raksha system on my edit page. I wonder how did the stations get lost in the second post?

The page will be improved thanks to your input. I try to make it clear in a help message that the system selected on the map is being edited. The confusing "detail" checkbox will be removed, system population will be added, and station population will be marked such that it should be the tiny/small/large/huge/etc value from the system map (not galaxy map).

Code:
{"cmdr":"Jameson","data":{"id":"raksha","system":"Raksha","coords":[-36.46875,-90.375,-29.21875],"significance":20,"detail":{"population":0,"allegiance":"Federation","economy":"Agriculture Refinery","government":"Democracy","security":null,"valid":"Gamma"},"stations":[{"station":"Raksha- Garneau Hub Station","type":"Orbis Starport","faction":"Jet Electronics Corporation","economy":["Refinery"],"population":"2.4 Billion","inferred":false,"shipyard":true,"outfitting":true,"commodities_market":true,"black_market":true,"valid":"Gamma"},{"station":"Raksha- Whitney Orbital","type":"Industrial Outpost","faction":"Jet Electronics Corporation","economy":["Refinery"],"population":"2.4 Billion","inferred":false,"shipyard":false,"outfitting":false,"commodities_market":false,"black_market":false,"valid":"Gamma"},{"station":"Raksha-Boswell Station","type":"Orbis Starport","faction":"United Raksha Party","economy":["Refinery"],"population":"2.4 Billion","inferred":false,"shipyard":true,"outfitting":true,"commodities_market":true,"black_market":false,"valid":"Gamma"},{"station":"Raksha-Camarda Port","type":"Industrial Outpost","faction":"Union of Raksha Labour","economy":["Refinery"],"population":"2.4 Billion","inferred":false,"shipyard":false,"outfitting":false,"commodities_market":true,"black_market":false,"valid":"Gamma"},{"station":"Raksha-Mccandless Station","type":"Orbis Starport","faction":"Union of Raksha Labour","economy":["Agriculture"],"population":"2.4 Billion","inferred":false,"shipyard":false,"outfitting":false,"commodities_market":false,"black_market":false,"valid":"Gamma"},{"station":"Raksha-Sarafanov City Station","type":"Orbis Starport","faction":"United Raksha Party","economy":["Refinery"],"population":"2.4 Billion","inferred":false,"shipyard":false,"outfitting":false,"commodities_market":false,"black_market":false,"valid":"Gamma"}],"valid":"Gamma","added":"Gamma","modified":"2014-11-27T11:33:44.195Z"}}
{"cmdr":"Jameson","data":{"id":"raksha","system":"Raksha","coords":[-36.46875,-90.375,-29.21875],"significance":20,"detail":{"population":0,"allegiance":"Federation","economy":"Agriculture ","government":"Democracy","security":null,"valid":"Gamma"},"valid":"Gamma","added":"Gamma","modified":"2014-11-27T11:33:44.195Z"}}
 
Last edited:
Back
Top Bottom