Based upon my experience, there are three things be required in the project you describe to ensure a minimal precision of 1 cm. First, Blender has a maximum order of magnitude of a dimension of 10,000 units, so for your 15 km project, you're going to want the project centered about the origin point so the minimum x, y, and z dimensions are a negative 7.500 km and the maximum x y and z dimensions are plus 7.500 km.
Next, it will be good practice to break the project down into multiple objects spread across multiple scenes. If there will be a checkpoint (guard shack) at the entrance located (to pull a location out of the air for the discussion) at 4.7 km in the positive x direction, and 5.9 miles in the positive y direction, make that guard shack as one or more independent object. As an independent object, you can track the dimensions of the guard shack / checkpoint to within 1 cm (actually smaller than that) more easily than tracking the four corners of the shack from the center point. Treating the guard shack separately also allows the guard shack to be constructed as multiple objects. This will be a necessity if at some point it is necessary or desirable to make some of the parts—sliding windows, or swinging doors, for example—movable. It is possible, of course, to collect all of the bits of the guard shack, and its accompanying devices (like entry gates) into a blender Group.
There is a precedent for making smaller groups of objects, not just within the main file, but moving some objects into other ~.blend files. Even if done on a full architectural plan, the architectural materials detailing the construction of the guard shack are going to e separate from the overall site plan. Putting some elements of the plan into other groups, or blend files is simply an extension of that already standard practice.
Third, Blender allows the movement of vertices (and groups of vertices) by changing values in the numeric boxes in the transform panel of the properties (N) shelf. If you change the location of a vertex (or a set of vertices) using these numeric values, you can help maximize the chances of the precision you want. There are two caveats to this. First the numbers displayed in the dimension boxes of the Transform depend a bit upon the width of the button. If the Properties shelf is too narrow to accommodate a ten digit number (with decimal point), it will truncate (or round) the number to fit. Second you might not get the precision for each set of corner vertices of the hypothetical guard shack referred to above if you choose to use global attributes. However, you can get the center of the guard shack to within a centimeter from the global center, and if you switch to local transformation orientation for the guard shack, you can certainly come within a one centimeter level of precision in the local object or group of objects.