Component-based GIS development