package au.org.aurin.wif.svc.allocation; import java.net.MalformedURLException; import java.util.List; import org.opengis.referencing.FactoryException; import org.opengis.referencing.NoSuchAuthorityCodeException; import au.org.aurin.wif.exception.config.GeoServerConfigException; import au.org.aurin.wif.exception.config.ParsingException; import au.org.aurin.wif.exception.config.WifInvalidConfigException; import au.org.aurin.wif.exception.io.DataStoreUnavailableException; import au.org.aurin.wif.exception.validate.IncompleteAllocationConfigException; import au.org.aurin.wif.exception.validate.IncompleteAllocationScenarioException; import au.org.aurin.wif.exception.validate.WifInvalidInputException; import au.org.aurin.wif.impl.suitability.WMSOutcome; import au.org.aurin.wif.model.allocation.AllocationScenario; /** * What if? projects future land use, population and employment patterns by * allocating the projected land use demands derived from a demand scenario to * different locations on the basis of their relative suitability as defined by * the assumptions set in the suitability scenario and any allocation controls * specified in the control scenario assumptions. * * You will be notified if not enough land is available to satisfy the projected * demand. If this occurs, you must modify the suitability, demand, or control * scenario assumptions until the suitability, demand and control assumptions * are consistent. Edit Define Control Scenarios The control scenarios allow you * to save the allocation order, land use controls, infrastructure controls, and * growth pattern assumption that are defined on the Control scenario * assumptions. This allows a set of control assumptions to be used along with a * suitability scenario and demand scenario to define an allocation scenario. It * comprises the definition of: * * Allocation Priorities Infrastructure Controls Land Use Controls Growth * Patterns * * Allocation Priorities Used to specify: * * the order in which projected land use demands are to be allocated the order * in which the various land use demands are to be allocated to different * locations. * * Land Uses Allocation order Can be used to specify the order in which * different land use demands are to be satisfied, i.e., the land use demand to * be satisfied first, the demand to be satisfied second, and so on. (Ranked * list!) Spatial order Specify the order in which different factors are * considered in allocating the projected land use demands to different * locations. There are currently the following options * * Suitability: allocates the projected land use demands to different locations * on the basis of their suitability for accommodating each land use (The better * the suitability the score, the more likely to be allocated). Growth Pattern: * allocates the projected demand on the basis of “growth patterns” specifying * the order in which the projected demand should be allocated to different * locations. [Look up in the growth pattern layer] Size: allocates the * projected demand to UAZs on the basis of their size, starting with the * largest suitable UAZ and proceeding to the smallest one. Random: This option * allocated the projected demand to different locations in a completely random * pattern * * Infrastructure Controls Specify the influence which the availability of * different kinds of infrastructure will have on the allocation process. * * Infrastructure Plans Can be used to select one or more Infrastructure Plans * specifying, for instance, the extension of water and sewer service, the * phased construction of major roads or the construction of highway * interchanges. Infrastructure Required Can be used to specify the relationship * between infrastructure service (or proximity) and different land uses. * * N/A (for “Not Affected”) is used for land uses whose location is not affected * by the availability of a given type of infrastructure. R (for “Required”) is * used for land uses that are assumed to require a particular type of land use. * X (for “Excluded”) is used for land uses which are assumed to be excluded * from areas that are served by, or near to, a particular type of * infrastructure * * Land Use Controls [Data hardcoded in interface?] Can be used to select the * 2030 Land Use plan from the drop down list. If this option is selected, the * projected land use demands will only be allocated to locations for which they * are planned in the 2030 the land use plan * * Defining Growth Patterns [Data hardcoded in interface?] Can be used to select * options which will determine the general spatial pattern for future growth. * For instance, the Concentric growth option assumes that, other things being * equal, the region will grow in a series of concentric rings from Central * City, located to the southeast of Edge City. The Radial growth option assumes * that, other things being equal, the region will grow in a radial pattern * outward from the region’s major roads. Edit Define Allocation Scenarios * * An allocation scenario is a triad of a Suitability scenario, that specifies * the most suitable sites, a Demand scenario that especifies the projected * demand for those sites, and a Control scenario that guides the allocation * process (specifies the allocation assumptions between demand and * suitability). * * Scenario names * * The default allocation scenario names created by What if? identify the * suitability, demand, and control scenarios that underlie them. * * For example, the "Suburbanization – Low Growth – Extend Services" scenario * combines the assumptions specified in: (1) the "Suburbanization" suitability * scenario; (2) the "Low Growth" demand scenario; and (3) the "Extend Services" * control scenario. Edit Compute Allocation * * Takes many minutes to produce the following... Edit Allocation results * Whether all the information is presented depends on the type of "What If" * Analysis Features performed (see next section), which in turns depends on the * right information available in the UAZ * * projected land use maps: Displays the projected land uses on top of the * current land use map, generating a map showing the projected land uses for * the selected allocation scenario and projection year. Viewing new development * maps:view maps which display the newly allocated land uses in a projection * year, without displaying land uses which have not changed. Comparing * allocation maps; of two up to four allocation scenarios already computed * Viewing allocation reports; Record the projected land uses, residential * population and employment for each projection year and for build out for the * sub-areas you defined already. It also provides information on the change in * the quantity of land, the residential population, and the employment for each * projection year for the population and population/employment analysis * options. it also reports for each sub area and in each projection year: Total * population; Group quarters population; Number of households; Number of * housing units; Number of vacant housing units; Vacancy rate; and Average * household size. the projected employment for all employment sectors for each * sub-area and the change in the employment for each employment sector between * projection years for each sub-area Viewing allocation assumptions reports: * All the assumptions compiled Viewing sub-area projections: an allocation map * of each sub area per projection year */ public interface AllocationScenarioService { /** * Creates the allocation scenario. * * @param allocationScenario * the allocation scenario * @param projectId * the project id * @return the allocation scenario * @throws WifInvalidInputException * the wif invalid input exception * @throws WifInvalidConfigException * the wif invalid config exception * @throws ParsingException * the parsing exception * @throws IncompleteAllocationScenarioException * the incomplete allocation scenario exception * @throws FactoryException * @throws GeoServerConfigException * @throws DataStoreUnavailableException * @throws NoSuchAuthorityCodeException * @throws MalformedURLException * @throws IllegalArgumentException * @throws IncompleteAllocationConfigException */ AllocationScenario createAllocationScenario( AllocationScenario allocationScenario, String projectId) throws WifInvalidInputException, WifInvalidConfigException, ParsingException, IncompleteAllocationScenarioException, IllegalArgumentException, MalformedURLException, NoSuchAuthorityCodeException, DataStoreUnavailableException, GeoServerConfigException, FactoryException; /** * Gets the allocation scenario. * * @param id * the id * @return the allocation scenario * @throws WifInvalidInputException * the wif invalid input exception * @throws WifInvalidConfigException * the wif invalid config exception * @throws ParsingException * the parsing exception */ AllocationScenario getAllocationScenario(String id) throws WifInvalidInputException, WifInvalidConfigException, ParsingException; /** * Gets the allocation scenario. * * @param id * the id * @param projectId * the project id * @return the allocation scenario * @throws WifInvalidInputException * the wif invalid input exception * @throws WifInvalidConfigException * the wif invalid config exception * @throws ParsingException * the parsing exception */ AllocationScenario getAllocationScenario(String id, String projectId) throws WifInvalidInputException, WifInvalidConfigException, ParsingException; /** * Update allocation scenario. * * @param allocationScenario * the allocation scenario * @param projectId * the project id * @throws WifInvalidInputException * the wif invalid input exception * @throws WifInvalidConfigException * the wif invalid config exception * @throws ParsingException * the parsing exception */ void updateAllocationScenario(AllocationScenario allocationScenario, String projectId) throws WifInvalidInputException, WifInvalidConfigException, ParsingException; /** * Delete allocation scenario. * * @param id * the id * @param projectId * the project id * @throws WifInvalidInputException * the wif invalid input exception * @throws WifInvalidConfigException * the wif invalid config exception * @throws ParsingException * the parsing exception */ void deleteAllocationScenario(String id, String projectId) throws WifInvalidInputException, WifInvalidConfigException, ParsingException; /** * Gets the allocation scenarios. * * @param projectId * the project id * @return the allocation scenarios * @throws WifInvalidInputException * the wif invalid input exception */ List<AllocationScenario> getAllocationScenarios(String projectId) throws WifInvalidInputException; /** * Gets the wms information, for allocation for each suitability land use * including the chloropleth ranges. * * * @param project * the project * @return the wms * @throws WifInvalidInputException * the wif invalid input exception * @throws ParsingException * @throws WifInvalidConfigException */ WMSOutcome getWMS(String id) throws WifInvalidInputException, WifInvalidConfigException, ParsingException; }