Discussion What is the most efficient way to crowdsource the 3D system coordinates

Respone of Michael brookes

Michael Brookes said:
You should only ticket system duplicates if they are actually two or more systems in game with the same name - the list isn't evidence of this as it's just a rough dump from a spreadsheet.

I've edited down the following reply of mine from this thread into a ticket:

Someone at FD has made a mistake. There are currently two systems called Chara in the map. One at the co-ordinates MB provided, -130.468750,-21.687500,-124.781250, and another where we know and love it around -4.80, 26.41, -4.99 (my beta 1 eyeballed co-ords).

There's a Jata at around -67.78125, 58.3125, -28.8125 (from systems.json), and indeed another out around -28.375, -112.5, 98.4375 from the b3 data.

I'd wonder if they've managed to re-use any other system names.

As in this case I confirmed both in the beta3 in-game map.
 
The B2 Wredguia where mostly renamed and moved slightly right? Checked one from my dataset today, and while I cant access my notes right now, it was a new sector-name and moved about 2 LY on the z axis, but still inside the x/y 1LY grid. Sounds correct?

What you say is that I could not search for the new name unless I type the exact name? Have to test that tomorrow morning I guess.
 
The B2 Wredguia where mostly renamed and moved slightly right? Checked one from my dataset today, and while I cant access my notes right now, it was a new sector-name and moved about 2 LY on the z axis, but still inside the x/y 1LY grid. Sounds correct?

What you say is that I could not search for the new name unless I type the exact name? Have to test that tomorrow morning I guess.

Yes, the Wredguia systems were moved and renamed.

No, what I'm saying is that you can't search for them even if you type the name exactly. E.g. "Bei Dou Sector EL-Y c20" is close to "BF Canis Venatici", but searching for "Bei Dou Sector EL-Y c20" finds nothing. If I knew the Wredguia name that system originally had then I could search for it that way but I don't.
 

Michael Brookes

Game Director
Yes, the Wredguia systems were moved and renamed.

No, what I'm saying is that you can't search for them even if you type the name exactly. E.g. "Bei Dou Sector EL-Y c20" is close to "BF Canis Venatici", but searching for "Bei Dou Sector EL-Y c20" finds nothing. If I knew the Wredguia name that system originally had then I could search for it that way but I don't.

No, they were regenerated. If the mass distribution changes (which it did and will do again for gamma) then the systems created will change. There may be some overlap because the names would be reused as they've been reset.

Michael
 
No, they were regenerated. If the mass distribution changes (which it did and will do again for gamma) then the systems created will change. There may be some overlap because the names would be reused as they've been reset.

Yes, that makes sense. But it is a bug that we can't search for them using the "...Sector..." name, right?
 
Yes, that makes sense. But it is a bug that we can't search for them using the "...Sector..." name, right?

That have to be a bug. I will still try to test this when I get some gametime again. The autogenerated names that I have found while updating my DB (Shudun Sector AA-A d142 and CORE SYS Sector CQ-Y C22 + friends), I dont think I tried to search for them. I think I targeted them from UI and opened galaxy map. Will try them too.


I'm also still interested in knowing if systems like Zavijah or San Tu are bugged or if the lacking docks/platform/station is Working As Intended.
 
I'm also still interested in knowing if systems like Zavijah or San Tu are bugged or if the lacking docks/platform/station is Working As Intended.

I'm sure Michael said in another thread that systems with economies but no stations were buggy. I think you should ticket the ones you've found.
 
@Michael

Are the station names to be unique as well as the planets? Wolverine said he had PM'd you this question but he hasn't said if he had received an answer yet.
 

wolverine2710

Tutorial & Guide Writer
Re Galaxy coords vs SOL coords. As long as the in game map is SOL centered, TGC should work on SOL coords too.

Now, here is a little something for free use:
Code:
<body>
   <span id="firsttext">First upload the grid view:</span>
   <input name="uploadgrid" type="file" id="uploadgrid" />
   <br />
   <div id="firstid">[ START ] first click the 4 edges, then click center of orange dot<br />
   </div>
   <span id="secondtext" style="display: none;">Now upload side shot of star: </span>
   <input name="uploadside" type="file" id="uploadside" style="display: none;" />
   <div id="secondid" style="display: none;">[ START ] first click on horizon, then click on star.</div>
</body>

Oh, and of course the javascript to go with it:
Code:
$(document).ready(function(){
	if(window.FileReader){
		console.log("file reader support");
	}
	else{
		alert("This will not work")
	}

	$(":file").on("change", function(e){
		handleFile((this).id, e);
	});
});

var points = new Array();
var firstfile = null;
var firstimg = null;
var secondfile = null;
var secondimg = null;
var storesize = 0;
var offx = 0;
var offy = 0;
function handleFile(id, e){
	if(id == "uploadgrid"){
		var file = document.getElementById(id).files[0];
		firstfile = file;
		var img = new Image();
		firstimg = img;
		img.onload = function(){
			$("#firstsrc").remove();
			var canv = document.createElement("canvas");
			canv.width = this.width;
			canv.height = this.height;
			canv.id = "firstsrc";
			document.getElementById("firstid").appendChild(canv);
			var c = canv.getContext("2d");
			c.drawImage(this, 0, 0);
			$("#firstsrc").on("click", function(e){
				points.push(new Array(e.offsetX, e.offsetY));
				if(points.length == 4){
					redrawFirstImage();
				}
				if(points.length == 5){
					calculateFromCenter();
				}
			});
		}
	}
	else if(id == "uploadside"){
		var file = document.getElementById(id).files[0];
		secondfile = file;
		var img = new Image();
		secondimg = img;
		points = new Array();
		img.onload = function(){
			$("#firstsrc").remove();
			var canv = document.createElement("canvas");
			canv.width = this.width;
			canv.height = this.height;
			canv.id = "secondsrc";
			document.getElementById("secondid").appendChild(canv);
			var c = canv.getContext("2d");
			c.drawImage(this, 0, 0);
			$("#secondsrc").on("click", function(e){
				points.push(new Array(e.offsetX, e.offsetY));
				if(points.length == 2){
					calculateLastOffset();
				}
			});
		}
	}
	img.src = URL.createObjectURL(file);
}

function calculateLastOffset(){
	offz = Math.round((((points[0][1] - points[1][1])*4)/storesize)*1000)/1000;
	document.getElementById("firstid").innerHTML = "Offset X: <b>"+offx+"</b> Offset Y: <b>"+offy+"</b> Offset Z: <b>"+offz+"</b><br />";
	$("#uploadside").hide();
	$("#secondid").hide();
	$("#secondtext").hide();
	document.getElementById("firsttext").innerHTML = "<b>We now have X, Y and Z offset.</b>Exercise done.<br />";
}

function calculateFromCenter(){
	var can = document.getElementById("firstsrc");
	var w = can.width;
	var h = can.height;
	offx = Math.round(((w - points[4][0]) / w)*1000)/1000;
	offy = Math.round(((h - points[4][1]) / h)*1000)/1000;
	storesize = (w + h) / 2;
	document.getElementById("firstid").innerHTML = "Offset X: <b>"+offx+"</b> Offset Y: <b>"+offy+"</b><br />";
	$("#uploadgrid").hide();
	$("#uploadside").show();
	$("#secondid").show();
	$("#secondtext").show();
	document.getElementById("firsttext").innerHTML = "We now have X and Y offset, continue to Z...<br />";
}

function redrawFirstImage(){
	var can = document.getElementById("firstsrc");
	var w = can.width;
	var h = can.height;
	var c = can.getContext("2d"); 
	c.clearRect(0,0,w,h);
	var mm = findminmax(points);
	w = mm[1] - mm[0];
	h = mm[3] - mm[2];
	can.width = c.width = w*4;
	can.height = c.height = h*4;
	//c.drawImage(firstimg, 0, 0, w, h, mm[0], mm[2], w, h);
	c.drawImage(firstimg, mm[0], mm[2], w, h, 0, 0, w*4, h*4);
}

function findminmax(pa){
	var minx = 99999;
	var maxx = -1;
	var miny = 99999;
	var maxy = -1;
	var n = pa.length;
	for(var i = 0; i < n; i++){
		if(pa[i][0] < minx){
			minx = pa[i][0];
		}
		if(pa[i][0] > maxx){
			maxx = pa[i][0];
		}
		if(pa[i][1] < miny){
			miny = pa[i][1];
		}
		if(pa[i][1] > maxy){
			maxy = pa[i][1];
		}
	}

	return new Array(minx, maxx, miny, maxy);
}

Code is fast and dirty, formating of html not a priority.
In short, it takes two screenshots. Zoom in on selected star, try to get as much top down and as little rotation as possible, F10, rotate to side view, still zoomed in, try to get a background with good contrast to make it easier for yourself and F10.
Select first screenshot (everything happens client side, no upload). Image loads, click on the 4 bounding borders around star, image zooms, click on center of orange circle (not star, thats "off" from what I see). Voila you should have x and y offset more then good enough to snap on a 1/32 grid.
Next select second screenshot, click on horizon grid, click on main star (the one with all the lines going from it...), and there is z offset that also should be precise enough to snap on grid.
Then count the grid to get the main coords (and since it is in game, it is SOL centered).

Code only tested on Opala, getting good enough results.
No error checking included.
Process could of course be optimized a lot. one could be to click all 4 corners instead of borders. Then rotate and counter the slight perspective. Maybe have 4 corners you could drag to fit the grid. Then a circle that you could change size of and align to the blue or orange circle. That would be more accurate.

Please feel free to loan and change code if you want to include in your tools. Personally I will finetune it a bit for my "works-for-me" tools. Its faster and less error prone then writing down a lot of distances.

Can´t recall having seen your tool being hosted on a webserver/webpage. Have added it to list 1 on the OP. Thanks very much for your tool ;-)
 
Last edited:

wolverine2710

Tutorial & Guide Writer
Commanders. The OP has all the tools used for their project and tools which use the coordinates. BUT even for me its pretty difficult to be 100% in the loop - being away etc. So PLEASE if I have missed someone, something please send a PM and/or post it here.I WILL then update the OP.
 

wolverine2710

Tutorial & Guide Writer
That makes OCR slightly (a lot) harder.

I assume you are referring to "Station and platform names don't need to be unique". It of course better to discuss this in the OCR thread but a small comment here none the less, lets discuss it in depth in the OCR thread though. I don´t think it makes it harder. If you look at the default generated netlog.log you will notice that once you exit a Hyperspace jump, flying around in that system (SC) and docking in that system the iirc the system name, station is written in that file - human readable. Imho a simple parser can extract it from the file. Atm Slopey´s BPC is doing exactly the same with the BPC v3 to detect where you are. Needed for manually entering prices for a certain system/station. Perhaps you can have a look at the netlog.log file(s), and see if this provides the info you need. If OCR takes place the moment a screenshot is made I think you have all the info you need. If the OCR tool creates with for example F11 (instead of F10) a screenshot a filename with system,stationname,timestamp could be created and parsed later.
 
Last edited:

Michael Brookes

Game Director
I assume you are referring to "Station and platform names don't need to be unique". It of course better to discuss this in the OCR thread but a small comment here none the less, lets discuss it in depth in the OCR thread though. I don´t think it makes it harder. If you look at the default generarted netlog.log you will notice that once you exit a Hyperspace jump, flying around in that system (SC) and docking in that system the iirc the system name, station is written in that file - human readable. Imho a simple parser can extract it from the file. Atm Slopey´s BPC is doing exactly the same with the BPC v3 to detect where you are. Needed for manually entering prices for a certain system/station. Perhaps you can have a look at the netlog.log file(s), and see if this provides the info you need. If OCR takes place the moment a screenshot is made I think you have all the info you need. If the OCR tool creates with for example F11 (instead of F10) a screenshot a filename with system,stationname,timestamp could be created and parsed later.

Just a heads up that you shouldn't rely on the netlog as a data source.

Michael
 

wolverine2710

Tutorial & Guide Writer
Just a heads up that you shouldn't rely on the netlog as a data source.

Michael

Michael, thanks for the warning. I must add a caveat emperor "things can/will change in ED" in the future.

Its a challenge for sure living with changing rules but graham.reeds my example of F11 and a personalised filename still holds water. The OCR tool could for example hook into TGC (The great collector), having system names/station names stored locally or accessible using a web-api. A dropdown box could be presented to easily select system,station name when F11 is pressed. If not possible, with alt-tab and running a small tool could set system,station name (dropdown) and put that in a file and let the OCR tool read that. Its ofc not as easy as parsing but there are/will be ways to get things working.
 
Last edited:
Ticketing all the systems I find with economy and no docks then.

As for OCR'ing the market screen. I would demand of the tool user to first find system+station, then do something similar as I did with the galaxy map screenshots. I was thinking adding a click in front of the first line so the system could calibrate itself (basically looking for height of text), then use a set of learned shapes to parse the screenshot. No time to do this for at least another week, but it is a very tempting spare time project. Since the html5-file stuff all happens in the client the server requirements are limited to whatever get data today. Input screenshot, output some data, send data to server, repeat until done.
 
Only if it's the system's name and it exists. Can you see the name in the map and not search for it?

Michael

Tested searching (galaxy map - navigation) one of the new systems I found, CORE SYS SECTOR CQ-Y C22, not giving result. Retyped twice with it on screen at about 32:26:8.
Tested on another new system, SHUDUN SECTOR AA-A D142 -1.149:34.512:-7.589, not giving result.

WREDGUIA AD-Q B46-3, used to be at -93.4375:19.59375:-58.53125, guess replaced with CEPHEI SECTOR HW-W B1-3. Moved to aboutish -93.8:21:-55.8. Searching for the new name give no result.
However Searching for the old name centered the map on CEPHEI SECTOR JR-W B 1-3 at about -87.3:-5:-50.8

My guess is that releasing that list in B2 and in B3 is going to pay off big, because this bug could have been a nasty surprise in the live game.
 

wolverine2710

Tutorial & Guide Writer
Posting about the netlog.log file brought to the surface and old idea I had. One of the challenges of the crowd source coordinates project is to get ALL systems. As we have no list of all system names we don´t know if we got them all. Once TGC is up and running and ready for normal volunteers (NV) - on which we have to rely on in the future for SB3, Gamma and beyond - may I suggest the following. A tool, command line or a small windows application which retrieves the system name, checks the TGC if it has coordinates for it or not. If not the system name is sent to TGC and can be presented as TODO in some form to a NV. The tool basically is a Unix tail command which checks if new data is written to the netlog.log file.

Of course we have to give a NV some incentive to install the tool. Even better if cmdrs who don´t participate in our project could be given an incentive if its presented as a captain Log tool. Atm I don´t know of a third party tool which does that. I´ve alway wanted to know which route I did fly in the last day, week, months. To keep Michael brookes advice in mind that we can´t/shouldn´t rely on the netlog.log in the future the following can be done. At startup the tool contacts TGC and checks if the netlog.log is still usable. If not the tool tells that to the user and quits. Suppose the captains log tool does NOT send info about the system if its not in TGC but does it always - could be optional. TGC collects the info and we now have info about where all commanders (anomized) are in the universe and how over time cmdrs spread out. A simple UUID for a cmdr could make that possible. caveat empeor: that info could be used for good and evil. Tin foil,paranoid mode: Pirates going to systems where most cmdrs are etc.... Can´´t imagine that being a problem in the end with the HUGE galaxy but still wanted to mention it. What are your thought about a captains log tool - wrt getting all system names and possible other usage of the collected data?
 
Last edited:
Back
Top Bottom