With the increasing relevance of the Internet of Things (IoT) and large-scale Location-Based Services (LBS), LoRa localization has been attractive due to its low cost, low power and long range properties. However, existing localization approaches based on Received Signal Strength Indicator (RSSI) are either easily affected by signal fading of different land-cover types or labor-intensive. In this work, we propose SateLoc, a LoRa localization system that utilizes satellite images to generate virtual fingerprints. Specifically, SateLoc first uses high-resolution satellite images to identify land- cover types. With the path loss parameters of each land-cover type, SateLoc can automatically generate a virtual fingerprinting map for each gateway. We then propose a novel multi-gateway combination strategy, which is weighted by the environment interference of each gateway, to produce a joint likelihood distribution for localization. We implement SateLoc with commercial LoRa devices without any hardware modification, and evaluate its performance in a 227,500m2 urban area. Experimental results show that SateLoc achieves a median localization error of 47.1m, improving more than 40% compared to the state-of-the-art model-based approaches. More importantly, compared to the fingerprinting-based approach, SateLoc does not require the labor-intensive fingerprint acquisition process.